Size: a a a

2020 August 04

R

Rafael 🦠 in ☄️ effector
а спрашиваю, потому что интересно что делать если: есть два ротуа, которые могут использовать один и тот же init

и есть ситуация, когда и тот и другой роут могут открыть в новой вкладке
источник

A

Andrey in ☄️ effector
Rafael 🦠
@ZeroBias при использовании index/init/state, сколько раз во всем проекте может быть заимпорчен один и тот же init?

т.е я не вижу никаких ограничений, если этот импорт сделаю два и более раз
а разве он не один раз при первом импорте окажет сайд эффекты?
источник

R

Rafael 🦠 in ☄️ effector
Andrey
а разве он не один раз при первом импорте окажет сайд эффекты?
да, он должен один раз выполнить сайд эффекты, но проблема в том, что есть два места где нужна эта фича
источник

R

Rafael 🦠 in ☄️ effector
и непонятно в какой из роутов уйдет пользователь
источник

🚀🚀

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

R

Rafael 🦠 in ☄️ effector
попробую еще разок пояснить: есть фича X у которой есть init файл

эта фича нужна при работе двух роутов (у меня код сплитинг по роутам), пусть есть роут А и роут Б

перед заходом в route А я инициализирую фичу

но вдруг пользователь открывает в новой вкладке роут Б. Если я перед заходом в роут Б буду так же инициализировать фичу не будет ли это противоречить концепции index/init/state?
источник

🚀🚀

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

A

Andrey in ☄️ effector
Rafael 🦠
попробую еще разок пояснить: есть фича X у которой есть init файл

эта фича нужна при работе двух роутов (у меня код сплитинг по роутам), пусть есть роут А и роут Б

перед заходом в route А я инициализирую фичу

но вдруг пользователь открывает в новой вкладке роут Б. Если я перед заходом в роут Б буду так же инициализировать фичу не будет ли это противоречить концепции index/init/state?
а сейчас вызов инит файла не в индекс файле фичи, которая загружается?
источник

NT

Nikita Tkachuk in ☄️ effector
ребзи, как это адекватно переписать?

const event = sample({
 source: $profile,
 clock: editEmployeeFx.done,
 fn: (prof, { params }) => prof.id === params.id,
})

guard({
 source: event,
 filter: (res) => res,
 target: fetchProfileFx,
})


нужно чтобы эффект вызывался только если эвент editEmployeeFx.done вызван с id равным тому, что лежит в сторе $profile )
источник

З

Завтра in ☄️ effector
а чем это не адекватно?
источник

З

Завтра in ☄️ effector
```
guard({
 source: sample({
   source: $profile,
   clock: editEmployeeFx.done,
   fn: (prof, { params }) => prof.id === params.id,
 }),
 filter: (res) => res,
 target: fetchProfileFx,
})
```
можно не выносить ивент в переменную
источник

NT

Nikita Tkachuk in ☄️ effector
filter: (res) => res - фигня какая-то
источник

NT

Nikita Tkachuk in ☄️ effector
sample генерит эвент с булевым значением только для того, чтобы в гварде этот булеан в фильтре использовать
источник

NT

Nikita Tkachuk in ☄️ effector
я даже название для event придумать не могу 🙂
источник

🦜

🦜 in ☄️ effector
Nikita Tkachuk
filter: (res) => res - фигня какая-то
guard(sample($profile, editEmployeeFx.done,
 (prof, { params }) => ({prof, params}), {
 filter: ({prof,params }) => prof.id === params.id,
 target: fetchProfileFx,
})
источник

NT

Nikita Tkachuk in ☄️ effector
да, так логичнее )
источник

NT

Nikita Tkachuk in ☄️ effector
спс )
источник

AO

Aleksandr Osipov in ☄️ effector
Nikita Tkachuk
filter: (res) => res - фигня какая-то
filter: Boolean?
источник

DS

Dmitriy Shuleshov in ☄️ effector
Nikita Tkachuk
ребзи, как это адекватно переписать?

const event = sample({
 source: $profile,
 clock: editEmployeeFx.done,
 fn: (prof, { params }) => prof.id === params.id,
})

guard({
 source: event,
 filter: (res) => res,
 target: fetchProfileFx,
})


нужно чтобы эффект вызывался только если эвент editEmployeeFx.done вызван с id равным тому, что лежит в сторе $profile )
const $isNeedFetchProfileFx = combine(
 $profile,
 restore(editEmployeeFx.done.map(p => p.params)),
 (currId, newId) => currId === newId)
)
guard({
 source: editEmployeeFx.done.map(p => p.params),
 filter: $isNeedFetchProfileFx,
 target: fetchProfileFx,
})
;

Наверное твой код норм, можно даже инлайнить sample. Попробовал лучше сделать а вышло даже хуже, кажется.
источник

NT

Nikita Tkachuk in ☄️ effector
так вроде даже читабельнее, но почему-то интуитивно не очень нравится что нужно из эвента создавать доп стор для того, чтобы в проверку запихнуть
источник