Size: a a a

2020 March 28

VK

Valeriy Kobzar in ☄️ effector
т.к. эффекты часто могут создаваться динамически и ты не можешь реагировать на doneData, failData гле-нибудь в сторах
источник

VK

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

VK

Valeriy Kobzar in ☄️ effector
одним эффектом этого не сделать параллельно
источник

🐱

🐱 Rough Cat in ☄️ effector
Valeriy Kobzar
например у тебя таблица и ты показываешь загрузку для отдельных ее записей, делая отдельные запросы для этих данных
ответы приходят соответственно для каждой строки таблицы отдельно
Че то так себе кейс
источник

VK

Valeriy Kobzar in ☄️ effector
сейчас это практически всегда приводит к однотипной конструкции

function createRowFetcher({ receiveError, receiveData, handler }) {
 const fx = createEffect({ handler })
 forward({ from: fx.failData, to: receiveError })
 forward({ from: fx.doneData, to: receiveData })
 return fx
}

кстати, @ZeroBias как тут правильно по завершении эффекта избавиться от следов его присутствия?
повесить e.finally.watch(() => clearNode(e)) ?

как вариант еще вот так работает

function createRowFetcher({receiveError, receiveData, handler}) {
 const fx = createEffect({handler})
 forward({from: fx.failData, to: receiveError})
 forward({from: fx.doneData, to: receiveData})
 fx.clear = () => clearNode(fx)
 return fx
}
источник

VK

Valeriy Kobzar in ☄️ effector
🐱 Rough Cat
Че то так себе кейс
ты просто не столкнулся еще с одновременно запущенным эффектом из разных мест асинхронно
источник

🐱

🐱 Rough Cat in ☄️ effector
Valeriy Kobzar
например у тебя таблица и ты показываешь загрузку для отдельных ее записей, делая отдельные запросы для этих данных
ответы приходят соответственно для каждой строки таблицы отдельно
Я не понимаю когда вообще пользователю понадобится грузить несколько разных строк сразу и следить за из состоянием???
источник

VK

Valeriy Kobzar in ☄️ effector
🐱 Rough Cat
Я не понимаю когда вообще пользователю понадобится грузить несколько разных строк сразу и следить за из состоянием???
источник

VK

Valeriy Kobzar in ☄️ effector
вот стандартный интерфейс табличный от antd например
источник

VK

Valeriy Kobzar in ☄️ effector
юзер либо выбрал несколько строк и нажал delete, либо натыкал делете отдельно для каждой строки
источник

VK

Valeriy Kobzar in ☄️ effector
ты ждешь ответа от сервера и показываешь крутилку в этот момент около записи
источник

VK

Valeriy Kobzar in ☄️ effector
так же есть кейс когда каждая запись разворачивается в этой же таблице
источник

VK

Valeriy Kobzar in ☄️ effector
с асинхронной подгрузкой деталей по ней
источник

VK

Valeriy Kobzar in ☄️ effector
и тоже можно натыкать и должен быть спинер для каждой записи
источник

VK

Valeriy Kobzar in ☄️ effector
если будет один эффект, будет один пендинг на все
источник

VK

Valeriy Kobzar in ☄️ effector
вот тут поправьте меня если я заблуждаюсь
источник

VK

Valeriy Kobzar in ☄️ effector
в принципе ситуацию бы спас какой-нибудь контекст вызова эффекта
чтобы стор pending мог быть хешом типа effect.pending[context], effect.inFlight[context], а в эвенты doneData/failData и т.д. контекст бы передавался в качестве параметра дополнительного
источник

VK

Valeriy Kobzar in ☄️ effector
@ZeroBias ты наверняка уже продумал все кейсы, развей мои влажные фантазии по этому поводу :))
источник

🦜

🦜 in ☄️ effector
Зачем на каждую строку создавать эффект?
источник

VK

Valeriy Kobzar in ☄️ effector
🦜
Зачем на каждую строку создавать эффект?
pending нужен для каждой строки отдельный
источник