Size: a a a

2020 August 11

З

Завтра in ☄️ effector
ну, есть субъективщина, а есть факт. многие сюда заходят с вопросами "а чо не получаеца", пытаясь переносить опыт с редаксов/мобыксов/стм_нейм сюда
источник

꧁岡

꧁倫太郎 岡部꧂... in ☄️ effector
хотя уже предлагали “переосмысление приложения после редакса”
источник

꧁岡

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

З

Завтра in ☄️ effector
для кого-то преимущества эффектора вообще кажутся неочевидными из-за "странного апи"
источник

🦜

🦜 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?
попробуй split cases
источник

🦜

🦜 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?
и заведи код в repl
источник

꧁岡

꧁倫太郎 岡部꧂... in ☄️ effector
Завтра
для кого-то преимущества эффектора вообще кажутся неочевидными из-за "странного апи"
я так показал когда лиду переписанную часть где сторы закинуты в аргументы эффектов через attach, он сказал сложна))0)
источник

З

Завтра in ☄️ effector
вот
источник

꧁岡

꧁倫太郎 岡部꧂... in ☄️ effector
ну сказали или так или в каждом эффекте писать $store.getState()
источник

🦜

🦜 in ☄️ effector
꧁倫太郎 岡部꧂
ну сказали или так или в каждом эффекте писать $store.getState()
сказали?
источник

꧁岡

꧁倫太郎 岡部꧂... in ☄️ effector
лан, пока сказали переписать и упростить бизнеслогику, типо чтобы чистые сторы, евенты и эффекты были и все
источник

꧁岡

꧁倫太郎 岡部꧂... in ☄️ effector
потом будет добавлять остальное
источник

З

Завтра in ☄️ effector
я так пришел на эффектор митап с коллегой, которая уже давно в разработке, она тоже сказала "что-то оно все очень замудреное"
типа, она поняла, что это может работать лучше, но сказала, что продать это тяжело из-за другого подхода)
источник

꧁岡

꧁倫太郎 岡部꧂... in ☄️ effector
🦜
сказали?
ага
источник

🦜

🦜 in ☄️ effector
когда-нибудь люди начнут читать документацию и смотреть примеры
источник

꧁岡

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

AO

Aleksandr Osipov in ☄️ effector
🦜
когда-нибудь люди начнут читать документацию и смотреть примеры
нет
источник

AO

Aleksandr Osipov in ☄️ effector
꧁倫太郎 岡部꧂
ну сказали или так или в каждом эффекте писать $store.getState()
и огрести проблем с getState
источник

꧁岡

꧁倫太郎 岡部꧂... in ☄️ effector
Aleksandr Osipov
и огрести проблем с getState
ну пока так
источник

꧁岡

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