Size: a a a

2020 March 23

l

lllla in ☄️ effector
Как из source, который в sample, получить данные в guard?
const isIdle = sample({
 source: $snapshotLoadings,
 clock: guard(gotSnapshot, {
   filter: ...
 })
})
источник

A

Andrey in ☄️ effector
да и зачем в createApi guard, там же в ветке редьюсера можно прописать тогда условие, при котором стейт обновится
типа там

const api = createApi($store, {
   add: (state, payload) => payload > 42 ? payload : state
});
источник

A

Andrey in ☄️ effector
lllla
Как из source, который в sample, получить данные в guard?
const isIdle = sample({
 source: $snapshotLoadings,
 clock: guard(gotSnapshot, {
   filter: ...
 })
})
поменять местами семпл и гард
гард снаружи будет, семпл внутри
источник

BS

Bogdan Shelomanov in ☄️ effector
Andrey
да и зачем в createApi guard, там же в ветке редьюсера можно прописать тогда условие, при котором стейт обновится
типа там

const api = createApi($store, {
   add: (state, payload) => payload > 42 ? payload : state
});
а как тогда инпут очистить?
источник

BS

Bogdan Shelomanov in ☄️ effector
вот так делал, но если смотреть в редюсере, то даже если стейт не изменился, условие не подошло, он очистит инпут
источник

l

lllla in ☄️ effector
Andrey
поменять местами семпл и гард
гард снаружи будет, семпл внутри
Но как сделать, чтобы при клике на ивент гард проверил доступный id в массиве ( id пришел от ивента ) и запустился таргет?
источник

BS

Bogdan Shelomanov in ☄️ effector
Bogdan Shelomanov
вот так делал, но если смотреть в редюсере, то даже если стейт не изменился, условие не подошло, он очистит инпут
и вообще, зачем это пихать в еффектор, почему тупо не смотреть в onChange длину и там не поставить условие?
источник

A

Andrey in ☄️ effector
lllla
Но как сделать, чтобы при клике на ивент гард проверил доступный id в массиве ( id пришел от ивента ) и запустился таргет?
https://share.effector.dev/cGoHBaEi

я так понял, ты про такое?)
источник

BS

Bogdan Shelomanov in ☄️ effector
$todos.on(addTodoProtected, (prev, value) => [
 ...prev,
 { value, isCompleted: false, id: id++ }
]);


вот такое в createApi не повторить?
источник

🦜

🦜 in ☄️ effector
Bogdan Shelomanov
$todos.on(addTodoProtected, (prev, value) => [
 ...prev,
 { value, isCompleted: false, id: id++ }
]);


вот такое в createApi не повторить?
почему?
источник

BS

Bogdan Shelomanov in ☄️ effector
🦜
почему?
внутри createApi я не могу прокинуть тот же value, я не так сделал может
источник

D

Dmitry in ☄️ effector
🦜
почему?
он хочет в createApi получить другой стейт
источник

🦜

🦜 in ☄️ effector
const {addTodoProtected} = createApi($todos, {
 addTodoProtected: (prev, value) => [
 ...prev,
 { value, isCompleted: false, id: id++ }
])
})
источник

D

Dmitry in ☄️ effector
🦜
const {addTodoProtected} = createApi($todos, {
 addTodoProtected: (prev, value) => [
 ...prev,
 { value, isCompleted: false, id: id++ }
])
})
const $value = createStore("")
источник

D

Dmitry in ☄️ effector
как передать его в createApi кроме создания нового ивента ?
источник

🦜

🦜 in ☄️ effector
value приходит как пейлоад ивента
источник

D

Dmitry in ☄️ effector
sample({ source: $value, clock: newevent, target: api.addTodo })

или тут createApi вообще не нужон ?
источник

🦜

🦜 in ☄️ effector
с чего он стор?
источник

D

Dmitry in ☄️ effector
🦜
value приходит как пейлоад ивента
он не в пейлоал
значение тоже где то хранится
он просто не весь пример показал
источник

D

Dmitry in ☄️ effector
источник