Size: a a a

2020 June 05

R

Ruslan 🌀 in ☄️ effector
Dmitriy Shuleshov
по ссылке самый последний пример?
да
источник

🚀🚀

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

На ум приходит только обернуть все в функцию которая будет каждый провайдить новые сторы и пр. Но мало ли)

Ещё есть вариант что один стор для всех чатов, тоже вполне рабочий наверно вариант
эффектор появился и разрабатывался в проекте мессенджера, мы делали именно так
источник

R

Rafael 🦠 in ☄️ effector
🚀🔬 🚀🔬🚀🔬
сэмпл в твоей записи создаёт два неявных состояния: был ли вызван сэмпл или нет и с каким значением, если был

необходимость оперировать этими данными явно означает что их можно представить в виде сторов

ещё можно делать тестирование через форк (приём для ssr), тогда каждый тест будет изолирован, плюс появляется возможность сделать ожидание завершения всех эффектов, вызванных запуском события
fork пока никак не типизирован?
источник

AO

Aleksandr Osipov in ☄️ effector
🚀🔬 🚀🔬🚀🔬
сэмпл в твоей записи создаёт два неявных состояния: был ли вызван сэмпл или нет и с каким значением, если был

необходимость оперировать этими данными явно означает что их можно представить в виде сторов

ещё можно делать тестирование через форк (приём для ssr), тогда каждый тест будет изолирован, плюс появляется возможность сделать ожидание завершения всех эффектов, вызванных запуском события
Чтобы с форком тестить надо чтобы все в одном домене были... кстати не было идеи сделать по умолчанию корневой домен, которому принадлежат по все сущности эффектора, это бы могло заменить пакеты типа effector-root
источник

R

Ruslan 🌀 in ☄️ effector
Aleksandr Osipov
Чтобы с форком тестить надо чтобы все в одном домене были... кстати не было идеи сделать по умолчанию корневой домен, которому принадлежат по все сущности эффектора, это бы могло заменить пакеты типа effector-root
идея не оч
источник

AO

Aleksandr Osipov in ☄️ effector
Ruslan 🌀
идея не оч
А почему?
источник

VI

Vadim Ivanov in ☄️ effector
🚀🔬 🚀🔬🚀🔬
эффектор появился и разрабатывался в проекте мессенджера, мы делали именно так
С одним стором?
источник

R

Ruslan 🌀 in ☄️ effector
Aleksandr Osipov
А почему?
источник

AO

Aleksandr Osipov in ☄️ effector
Да, точно, про код который внешний и не ждёт такого не подумал, забираю свою идею :)
источник

AO

Aleksandr Osipov in ☄️ effector
Вроде я весь чат читаю, но пропускаю такие вещи порой :/
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
Paruyr🛸🪐🌏
Мне надо что бы эффекты реагировали на переподключение вебсокета и перезапускались
реакция на переподключение не особо зависит от деталей имплементации:
одна подсистема вызывает эвент reconnect, вторая триггерит определенные вызовы при его срабатывании

const reconnected = createEvent<WebSocket>()

const joinedChannels = createStore<string[]>([])

const joinChannels = createEffect()

const rejoin = attach({
 source: joinedChannels,
 effect: joinChannels,
 mapParams: (socket, channels) => ({
   socket,
   channels,
 })
})

forward({
 from: reconnected,
 to: rejoin
})


это читается как «при восстановлении соединения, подключиться ко всем ранее активным каналам»
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
Rafael 🦠
fork пока никак не типизирован?
с самого начала покрыт типами https://github.com/zerobias/effector/blob/master/packages/effector/fork.d.ts
источник

DS

Dmitriy Shuleshov in ☄️ effector
Уже ищешь месседжи почти как батя😉😁
источник

P

Paruyr🛸🪐🌏 in ☄️ effector
🚀🔬 🚀🔬🚀🔬
реакция на переподключение не особо зависит от деталей имплементации:
одна подсистема вызывает эвент reconnect, вторая триггерит определенные вызовы при его срабатывании

const reconnected = createEvent<WebSocket>()

const joinedChannels = createStore<string[]>([])

const joinChannels = createEffect()

const rejoin = attach({
 source: joinedChannels,
 effect: joinChannels,
 mapParams: (socket, channels) => ({
   socket,
   channels,
 })
})

forward({
 from: reconnected,
 to: rejoin
})


это читается как «при восстановлении соединения, подключиться ко всем ранее активным каналам»
спасибо, интересно
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
мы сами кстати практиковали автоматизацию клиент-серверного взаимодействия

worker-rpc example

суть этого примера в том, что клиент-серверное апи генерируется автоматически для типичного случая, когда request и response — это отдельные события (сообщения по вебсокету), а когда клиент вызывает эффект из апи, его имплементация запускается на сервере
источник

🚀🚀

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


https://github.com/zerobias/effector/blob/master/examples/worker-rpc/src/common.js
источник

🚀🚀

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

P

Paruyr🛸🪐🌏 in ☄️ effector
@ZeroBias я так понял типа это норма когда модуль экспортирует инстанс стора?
В тестах надо уже модуль мокать видимо
источник

🚀🚀

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

P

Paruyr🛸🪐🌏 in ☄️ effector
есть примеры как тестировать сторы? что они правильно реагируют на события
источник