Size: a a a

Reatom — стейт-менеджер

2021 May 31

АЗ

Андрей Звёздочка... in Reatom — стейт-менеджер
Выглядит логично. Хотя я последний год как-то отдалился от всего такого.

Когда свой компилятор jsx пилить будешь, чтобы людей не заставлять форки делать?)
источник

a

artalar in Reatom — стейт-менеджер
Неск месяцев назад лежало в депс и были проблемы другие. Хотя я вот только что понял как решить ту проблему. Перекину в депс и запаблишу вечером
источник

a

artalar in Reatom — стейт-менеджер
Я бы скорее чет такое хотел бы https://twitter.com/artalar_dev/status/1395283222779637761?s=20
источник

a

artalar in Reatom — стейт-менеджер
Понятно что большую часть императивщины можно убрать ~декларативными хелперами потом.
Главная идея, которую я бы хотел попробовать, статически типизированный стейтлесс шаблонизатор с ферст класс компайлом в html
источник

DA

Danila A. in Reatom — стейт-менеджер
@artalar
Подскажи, пожалуйста, функция inc будет вызвана, если вызвать тут dispatch?
(declareAtom переименовал на atom)
источник

DA

Danila A. in Reatom — стейт-менеджер
Я хочу вызывать computer для атома b только в том случае, когда меняется a, и туда писать, скажем, Date.now(). Как сделать, чтобы это работало и при вызове c не вызывался пересчет b?
источник

a

artalar in Reatom — стейт-менеджер
да должна, потому что change - это типа метод
источник

a

artalar in Reatom — стейт-менеджер
а стой
источник

a

artalar in Reatom — стейт-менеджер
Подожди, я затупил, “b” же никак не связан с “c”, поэтому пересчета не будет
источник

DA

Danila A. in Reatom — стейт-менеджер
А как реатом понимает, что b никак не связан с c?
источник

a

artalar in Reatom — стейт-менеджер
Я больше скажу, если ты установишь в “а” тоже значение что там уже есть - “б” все равно НЕ пересчитается.

И ЕЩЕ больше скажу. Если у тебя есть в компьетере несколько зависимых атомов, а ты хочешь что-то перевычислять только если изменился один из них, можешь передать в “$” вторым аргументом колбек
источник

DA

Danila A. in Reatom — стейт-менеджер
А еще раньше делал в самом верху некоторый rootAtom —  это был combine от всех атомов на странице
Как сейчас это сделать? (Вроде бы больше нет combine)
источник

АЗ

Андрей Звёздочка... in Reatom — стейт-менеджер
Построение графа при инициализации проходит?
источник

a

artalar in Reatom — стейт-менеджер
Я бы скорее спросил как бы он мог это понять 🙂

Реатом ОЧЕНЬ оптимизирован, особенно во второй версии.
Можно просто глянуть исходники файла memo и немного поглючить.

Если по простому - каждый атом возвращает не только стейт, но и список зависиых экшенТайпов, так они копятся от дочернего атома к родительскому и при подписке на атомы ты можешь считать что подписываешься только на все зависимые экшенТайпы, при диспатче которых пробуешь пересчитать атом.
источник

a

artalar in Reatom — стейт-менеджер
^
источник

АЗ

Андрей Звёздочка... in Reatom — стейт-менеджер
А если ты будешь менять подписки на атомы с помощью условий?
источник

a

artalar in Reatom — стейт-менеджер
Еще для понимания могу рекомендовать попробовать что-то такое

console.log(anyAtom(createTransaction([])))
источник

a

artalar in Reatom — стейт-менеджер
Оно все автоматом трекается и по умному 🙂
“Просто” посмотри https://github.com/artalar/reatom/tree/v2/packages/core/src/memo.ts
источник

a

artalar in Reatom — стейт-менеджер
store.init(aAtom, bAtom, ....nAtom)
источник

a

artalar in Reatom — стейт-менеджер
Если у тебя все эешены только как методы и ты не подписываешься на чужие экшены через $(someAction, cb), то можешь вообще ничего не инициировать - все будет и так работать и стейт не будет теряться (викмапы)
источник