Size: a a a

2021 June 16

RS

Roman Still in ☄️ effector
Я че то не врубаюсь, jest не чекает как я понимаю babel config, у него если алиасы стоят в jest.config, он работает как надо, а если я пишу в бабеле как на твоем скрине, он игнорит
источник

AS

Alexey Sidash in ☄️ effector
Я не уверен, но кажется нет
источник
2021 June 17

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
с use и handlers сейчас главный вопрос в том как это всё типизировать, это же получается отдельная разновидность эффекта будет
источник

1

1N54N3 in ☄️ effector
Если  в source один из сторов изменится при выполнении эффекта в аттаче, но нужно всегда текущее его состояние в этом эффекте, как быть?
export const createMessageFx = attach({
 effect: sendMessageFx,
 mapParams: (params, [text,  progressModal]) => ({
   text,
   progressModal, // <- этот store может измениться при ходе выполнения эффекта
 }),
 source: [$messageText, $progressModal],
})
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
тогда sendMessageFx не один эффект, а несколько, подключенных к сторам по отдельности
источник

🚀🚀

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

1

1N54N3 in ☄️ effector
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
идея в том, что когда эффект делает только одно действие, то он не может пострадать от устаревшего состояния, потому что это асинхронное действие начнётся до устаревания данных:

createEffect(async data => {
 await api.request(data)
})


чтобы увидеть устаревшие данные нужно минимум два действия:

createEffect(async data => {
 await api.request({msg: data})
 await api.request({stats: data} <- данные устарели)
})


поэтому такие составные эффекты можно подключать к сторам независимо и вызывать в одном управляющем эффекте:

requestFx = createEffect(api.request)

messageFx = attach({
 source: $data,
 effect: requestFx,
 mapParams: (_, data) => ({msg: data})
})

statsFx = attach({
 source: $data,
 effect: requestFx,
 mapParams: (_, data) => ({stats: data})
})

createEffect(async () => {
 await messageFx()
 await statsFx()
})
источник

🚀🚀

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

IA

Ilya Agarkov in ☄️ effector
забавная шутка получилась, интрересно на скоро реюзабельна?

function optimisticUpdate<T>(
 store:
Store<T>,
 optimisticUpdatedStore:
Store<T>,
 effect:
Effect<unknown, unknown>
) {
 
sample({
   clock: effect.done,
   source: optimisticUpdatedStore,
   target: store,
 });

 
sample({
   clock: effect.fail,
   source: store,
   target: optimisticUpdatedStore,
 });

 optimisticUpdatedStore.on(store, (_, value) => value);
}
источник

IA

Ilya Agarkov in ☄️ effector
блин! как то ведь раньше можно было удобно код вставлять
источник

DS

Dmitriy Shuleshov in ☄️ effector
источник

Egor Гуща in ☄️ effector
Наколько я понимаю optimistic update это такое поведение, когда мы расчитываем на positive результат и не дожидаясь ответа от сервера обновляем в соотвествие с этим состояние, но если negative, то делаем ролбэк состояния

у тебя 1 сэмлп, а зачем тогда в конце подписка через .on()?
источник

DS

Dmitriy Shuleshov in ☄️ effector
function optimisticUpdate<T>(
 store: Store<T>,
 optimisticUpdatedStore: Store<T>,
 effect: Effect<unknown, unknown>
) {
 sample({
   clock: effect.done,
   source: optimisticUpdatedStore,
   target: store,
 });

 sample({
   clock: effect.fail,
   source: store,
   target: optimisticUpdatedStore,
 });

 optimisticUpdatedStore.on(effect, (_, value) => value);
}

Может так имелось ввиду?
источник

IA

Ilya Agarkov in ☄️ effector
ui всегда работает имено с optimisticUpdatedStore, и если отсновной стор обновился, то и его надо обновить
источник

IA

Ilya Agarkov in ☄️ effector
То есть optimisticUpdatedStore это стор который отображает состояние UI
а store - “реальные” данные
источник

Egor Гуща in ☄️ effector
так подписавшись на эффект ничего не получишь) fx[event]
источник

IA

Ilya Agarkov in ☄️ effector
нет. мало ли по каким причинам может изменится store
источник

IA

Ilya Agarkov in ☄️ effector
?
источник

Egor Гуща in ☄️ effector
я к тому что либо done/fail doneData/failData
источник