Size: a a a

2021 June 12

В

Влад in ☄️ effector
или не includes
источник

c⁣

createStore<🦉>... in ☄️ effector
Так там вроде есть метод API, который ищет по стране
источник
2021 June 13

TG

Timofey Goncharov in ☄️ effector
вопрос к тому кто много юзает эффектор.
что думаете по поводу такого подхода, когда в компонент прокидывается стор эффектора через пропсы и внутри компонента уже происходит
useStore?

идея мотивирована следующими причинами:
1. что бы разгрузить контейнер от лишних useStore,
2. не прокидывать множество пропсов а все включить в этот стор.
3. при этом есть доступ к состоянию на глобальном уровне.
4. компонент остается переиспользумым и не привязывается к отдельному юзкейсу
источник

c⁣

createStore<🦉>... in ☄️ effector
А зачем вообще подход с контейнерами? Мб его выкинуть просто?
источник

l

lllla in ☄️ effector
из конфига роутов у меня формируется, примерно, такой список:
[{conditional$, success, fail}, {conditional$, success,fail}...]

если условие верно, тригернуть success ивент и передать его далее (и так до конца). если список закончился — разрешить переход на роут.
Каким образом можно реализовать эту эстафету?
источник

TG

Timofey Goncharov in ☄️ effector
Это сарказм или реальное предложение?
источник

l

lllla in ☄️ effector
Реальное
источник

l

lllla in ☄️ effector
У тебя есть модель, компонент импортит данные из модели и рисует их
источник

l

lllla in ☄️ effector
Надобность в контейнере отпадает.
Возможно, с точки зрения реакта я не все понимаю, но во вью мы так отказались от всяких бизнес-рендерлес-компонентов (аля, контейнеры)
источник

TG

Timofey Goncharov in ☄️ effector
Если компонент будет импортить данные из модели, он будет заточен строго под конкретный юзкейс.

Например есть компонент User который рендерит:
first name
last name

А я хочу зарендерить 2 юзера одновременно. Разных юзера.
Если компонент импортит стор, то возникнет проблема.
Но если он принимает $user через пропсы, то я создаю 2 сторы изолированные друг от друга, и прокидываю в 2 компонента.

<div>
 <User $user={$userA} />
 <User $user={$userB} />
</div>

Если же компонент сразу бы импортил какой-то конкретный стор, мы бы лишили его такой возможности.
источник

TG

Timofey Goncharov in ☄️ effector
А контейнер в данном случае является композицией двух компонентов. Которая решает какой компонент, с каким стором работает.
источник

TG

Timofey Goncharov in ☄️ effector
В данном случае от привычного редаксовского понятия "контейнер" можно отойти и назвать просто "компонент-обертка".
источник

TG

Timofey Goncharov in ☄️ effector
Ну тут разве что на ум приходит такое:
делаем forEach по массиву-конфигу.
На каждой интерации делаем sample:
({$conditional, success}) => 
 sample({
   source: $conditional,
   clock: guard({ source: $conditional, filter: (v) => v })
   target: success,
 })
источник

TG

Timofey Goncharov in ☄️ effector
Только важно все сделать где-то в корне модуля, что бы все связи sample сформировал один раз
источник

TG

Timofey Goncharov in ☄️ effector
Хотя в таком случае цепочка не прервется если будет false в условии.
Как цепочку прервать хз, но можно посчитать кол-во удачных условий что бы они совпали с общим кол-вом условий.
источник

В

Влад in ☄️ effector
А зачем sample нужен?
источник

TG

Timofey Goncharov in ☄️ effector
Ну попросили на сколько я понял, вызывать success евент по условию которое лежит в $conditinal, хотя можно же через просто guard все провернуть)
источник

TG

Timofey Goncharov in ☄️ effector
guard({filter: $conditional})
источник

l

lllla in ☄️ effector
При переходе на роут, срабатывает ивент входа, проверяется условие и если оно истинно — идёт фаер success
источник

l

lllla in ☄️ effector
Думаю, что при инициализации роутера я буду строить эти связи. Просто для каждого роута нужно создать этот ивент входа
источник