Size: a a a

2021 June 11

c⁣

createStore<🦉>... in ☄️ effector
variant
или spec({ visible: $data })
источник

M

Maxim in ☄️ effector
C variant у меня как-то коряво получилось
```variant({
source: account$.map(data => {
 
return data ? { status: 'completed', data } : { status: 'loading' };
}),
key: 'status',
cases: {
 loading: () => {
 
h('div', {
   text: 'Loading',
  });
 },
 completed: ({ store }) => {
 
h('div', {
   text: store.map(data => data.data.name),
  });
 },
},
});
```
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
тогда более общий route
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
route относится к variant так же как guard к split
источник

🚀🚀

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

c⁣

createStore<🦉>... in ☄️ effector
я использую такой подход, когда есть всего два варианта:
h(‘div’, {
 visible: account$.map(account => !account),
 text: ‘Loading’,
})
h(‘div’, {
 visible: account$.map(account => account !== null),
 text: account$.map(account => account.data.name)
})

Если появляется третий, то юзаю variant или route

совет лично от меня: не стоит называть переменные абстрактно data, state, store в коллбеках и аргументах
это ухудшает читаемость кода
источник

M

Maxim in ☄️ effector
Я пока трогаю форест и не особо слежу за читаемостью
источник

M

Maxim in ☄️ effector
Вот этот вариант кажется норм
```route({
source: account$,
visible: account => account ===
null,
fn: () => {
 
h('div', {
  text: 'Loading',
 });
},
});
route({
source: account$,
visible: account => !!account,
fn: ({ store }) => {
 
h('div', {
  text: store.map(data => data.name),
 });
},
});
```
источник

c⁣

createStore<🦉>... in ☄️ effector
читаемость довольно сильно влияет на обучение.
особенно на субъективное восприятие
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
ну не накидывайся)
источник

c⁣

createStore<🦉>... in ☄️ effector
так это, тот же вариант с visible, только сложнее выглядит, не?
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
visible есть только у отдельных вызовов h, в компоненте может быть несколько соседних дом нод
источник

M

Maxim in ☄️ effector
+
Мне там нужно компонент отрендерить
источник

M

Maxim in ☄️ effector
А я правильно понимаю, что эффекты можно вызывать так? И он будет только при монтировании вызываться
h('section', () => {
fetchAccountFx();

})
источник

c⁣

createStore<🦉>... in ☄️ effector
о, тоже плюс
источник

🚀🚀

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

{
 a()
 {
   b()
 }
 {
   c()
 }
}

для вызова эффектов при монтировании можно использовать node(() => fx())

но node работает лишь внутри дом-нод (вызовов h)
источник

🚀🚀

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

M

Maxim in ☄️ effector
Роутера для фореста еще нет?
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
роутер в процессе) https://t.me/effector_ru/206907
источник