Size: a a a

2020 August 21

yv

yumaa verdin in ☄️ effector
Иван
уо

а дайте потыкать-посмотреть на имплементацию формы редактирования с эффектором, чтобы впитать общие паттерны
в закрепе как раз ссылочка на библиотеку для работы с формами
источник

DS

Dmitriy Shuleshov in ☄️ effector
Иван
уо

а дайте потыкать-посмотреть на имплементацию формы редактирования с эффектором, чтобы впитать общие паттерны
😔
источник

И

Иван in ☄️ effector
yumaa verdin
в закрепе как раз ссылочка на библиотеку для работы с формами
хотелось бы взглянуть на что-то без библиотек
источник

🦜

🦜 in ☄️ effector
Иван
хотелось бы взглянуть на что-то без библиотек
В репе примеры
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
Иван
уо

а дайте потыкать-посмотреть на имплементацию формы редактирования с эффектором, чтобы впитать общие паттерны
источник

И

Иван in ☄️ effector
♥️
источник

И

Иван in ☄️ effector
Example 1 — прям шик и блеск во всей эффекторной красе. но я спрашивал про форму редактирования. как кошерно обрабатывать загрузку данных перед рендером формы, куда складывать изменения в процессе заполнения формы, вот это вот всё
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
допустим, форма редактирования профиля

const profile = createStore({
 name: 'guest',
 age: 18,
})
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
если при открытии формы редактирования нужно сделать запрос на сервер за текущими данными, то это эффект

const fetchProfile = createEffect()

profile.on(fetchProfile.doneData, (_, profile) => profile)
источник

🦜

🦜 in ☄️ effector
🚀🔬 🚀🔬🚀🔬
если при открытии формы редактирования нужно сделать запрос на сервер за текущими данными, то это эффект

const fetchProfile = createEffect()

profile.on(fetchProfile.doneData, (_, profile) => profile)
.doneData забыл?
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
чтобы показать лоадер пользователю на время загрузки, используется стор .pending (есть в доке эффекта)

const EditProfile = () => {

 useEffect(() => {
   fetchProfile()
 }, [])
 const loading = useStore(fetchProfile.pending)

 return loading
   ? <Loading />
   : <ProfileForm />
}
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
🦜
.doneData забыл?
да, благодарю)
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
данные при редактировании формы можно складывать в этот же стор profile

const changeName = createEvent()
profile.on(changeName, ({age}, name) => ({name, age}))

const ProfileForm = () => {
 const {name, age} = useStore(profile)

 return <input value={name} onChange={e => changeName(e.target.value)} />
}
источник

VK

Vladislav K. in ☄️ effector
Красота охуеть просто
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
ну и наконец, чтобы отправить форму обратно на сервер нужен эвент сабмита, эффект отправки и sample

const clickSubmit = createEvent()

const saveProfileFx = createEffect()

sample({
 source: profile,
 clock: clickSubmit,
 target: saveProfileFx
})
источник

И

Иван in ☄️ effector
меня малость смущает, что

$form = restore(fx)
$form.on(change, …)

это один и тот же стор. это точно ок? чую задом, что может где-то что-то подпортить
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
.on чейнится, можно создать стор и подключить к нему всё, что требуется сразу
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
$form = restore(fx)
 .on(a, ...)
 .on(b, ...)
источник

🦜

🦜 in ☄️ effector
Иван
меня малость смущает, что

$form = restore(fx)
$form.on(change, …)

это один и тот же стор. это точно ок? чую задом, что может где-то что-то подпортить
ну, если кто-то дернет fx то у тебя новое значение в сторе будет
источник

🦜

🦜 in ☄️ effector
я не прав?
источник