Size: a a a

2020 August 11

꧁岡

꧁倫太郎 岡部꧂... in ☄️ effector
🤔
источник

꧁岡

꧁倫太郎 岡部꧂... in ☄️ effector
ну ладно
источник

꧁岡

꧁倫太郎 岡部꧂... in ☄️ effector
надо это тогда записать
источник

AO

Aleksandr Osipov in ☄️ effector
источник

c⁣

createStore<🦉>... in ☄️ effector
@ZeroBias я тут пытаюсь прикрутить бабель плагин к patronum
и eventCreators прокидывает вторым аргументом

Но когда мы с тобой обсуждали реализацию readConfig
я ожидал, что плагин будет примешивать name,sid или специальное поле к первому аргументу

https://github.com/effector/patronum/blob/46dda4c76d6e0a82bed3d2752b604124381d2d55/library.js#L11
источник

c⁣

createStore<🦉>... in ☄️ effector
источник

AO

Aleksandr Osipov in ☄️ effector
источник

AO

Aleksandr Osipov in ☄️ effector
а теперь заменим  token.on(run, token => token) на  forward
источник

AO

Aleksandr Osipov in ☄️ effector
источник

AO

Aleksandr Osipov in ☄️ effector
и о чудо другое поведение
источник

AO

Aleksandr Osipov in ☄️ effector
вот чтобы не думать о приоритетах и всем таком надо декларативно получать данныи из сторов через sample и attach
источник

fe

from earth in ☄️ effector
🦜
попробуй split cases
почитал, не уверен что подходит, т.к. там ветвление по аргументам события
а мне надо на стор смотреть
источник

fe

from earth in ☄️ effector
from earth
А теперь такая задачка

На первом шаге есть условно кнопка "next"
По клику на неё
— если пользователь залогинен (== есть user address, считайте это айди пользователя), то направить на второй шаг
— если нет, кинуть ивент (типа address required), дождаться когда появится user address, когда появился — направить на второй шаг

Нагородил тут вот такое решение:


export const setAddress = createEvent<string | null>();
export const address = restore(setAddress, null);

export const next = createEvent();
const requireAddress = createEvent();

export const requireAddressFx = createEffect({
 handler: () => {
   requireAddress();
   const unsub = address.subscribe(value => {
     if (value) {
       next();
       unsub();
     }
   });
 },
});

export const addressDialogDismiss = createEvent();

guard({
 source: sample(address, next),
 filter: address.map(x => !x),
 target: requireAddressFx,
});

export const awaitingAddress = createStore(false)
 .on(requireAddress, () => true)
 .on(addressDialogDismiss, () => false)
 .on(address, (_, payload) => !payload);


названия мне не нравятся совсем, не хватает неймспейсинга наверное

Но основной вопрос — правильно ли делать эффект, который подписывается на стор и отписывается в коллбеке subscribe?
тут кстати походу неправильно, на второй шаг сразу будет переключаться
источник

🦜

🦜 in ☄️ effector
from earth
почитал, не уверен что подходит, т.к. там ветвление по аргументам события
а мне надо на стор смотреть
так ты можешь стор добавить через sample
источник

꧁岡

꧁倫太郎 岡部꧂... in ☄️ effector
I see
источник

fe

from earth in ☄️ effector
вот сделал вроде похожее https://share.effector.dev/atCKGw31
источник

fe

from earth in ☄️ effector
🦜
так ты можешь стор добавить через sample
мм пояснишь?
источник

fe

from earth in ☄️ effector
какой именно
источник

AO

Aleksandr Osipov in ☄️ effector
Aleksandr Osipov
вот чтобы не думать о приоритетах и всем таком надо декларативно получать данныи из сторов через sample и attach
иначе безабидный рефакторинг кода (on -> forward и vice versa) будет приводит к чудесам
источник

🦜

🦜 in ☄️ effector
from earth
мм пояснишь?
какой тебе нужен в split
источник