Словарь основных понятий
#
EventEvent (событие, эвент) это функция, на вызовы которой можно подписаться. Она может обозначать намерение изменить состояния в приложении, указанием на то, что происходит в приложении, быть командой для управления сущностями, триггером вычислений и так далее.
Event в документации
#
StoreStore (состояние, стор) это объект который хранит состояние. В приложении могут совместно существовать множество состояний
Store в документации
#
EffectEffect это контейнер для сайд-эффектов, возможно асинхронных. В комплекте имеет ряд заранее созданных эвентов и сторов, облегчающих стадартные действия
При императивном вызове всегда возвращает Promise с результатом.
Может иметь один аргумент или не иметь ни одного
Effect в документации
#
DomainDomain это способ группировки и применения массовых обработок к юнитам. Домены получают уведомления о создании событий, сторов, эффектов и вложенных доменов. Часто используются для логгирования и SSR
Domain в документации
#
UnitТип данных, используемый для описания бизнес-логики приложений. Большинство методов эффектора имеют дело с обработкой юнитов. Существует четыре типа юнитов: store, event, effect и domain
#
Common unitОбычные юниты можно использовать для запуска обновлений других юнитов. Существует три типа обычных юнитов: store (стор), event (событие) и effect (эффект). Когда метод принимает юниты, это означает, что он принимает события, эффекты и сторы в качестве источника реактивных обновлений
#
PurityБольшинство функций, передаваемых в методы api не должны вызывать другие события или эффекты: легче рассуждать о потоке данных приложения, когда императивные триггеры сгруппированы внутри обработчиков эффектов, а не рассредоточены по всей бизнес-логике
Правильно, императивно:
Правильно, декларативно:
Не правильно:
#
ReducerReducer вычисляет новое состояние, учитывая предыдущее состояние и данные из события. Для сторов, если reducer возвращает undefined или то же состояние (===), то обновления не будет
#
WatcherWatcher - функция с сайд-эффектами, для работы которых не нужны возможности по перехвату ошибок и уведомления подписчиков об завершении асинхронной работы. Используется в event.watch, store.watch и хуках домена. Возвращаемое значение игнорируется
#
SubscriptionФункция отмены подписки, после её вызова watcher перестаёт получать обновления и удаляется из памяти. Повторные вызовы функции отмены подписки не делают ничего
Ручное управление подписками мешает сосредоточиться на управлении данными и бизнес-логикой
Эффектор предоставляет широкий набор возможностей, чтобы свести необходимость удаления подписок к минимуму. Это отличает его от большинства других реактивных библиотек