Domain (домен) - это способ группировки и массовой обработки юнитов.
Домен может подписываться на создание события, эффекта, стор или вложенного домена с помощью методов onCreateEvent, onCreateStore, onCreateEffect, onCreateDomain.
Может использоваться для логирования или других сайд эффектов.
Методы для создания юнитов
createEvent(name?)
Аргументы
name? (string): имя события
Возвращает
Event: Новое событие
createEffect(handler?)
Создает эффект с переданным обработчиком
Аргументы
handler? (Function): функция для обработки вызова эффектов, также может быть установленна с помощью use(handler)
Возвращает
Effect: Контейнер для асинхронных функций.
createEffect(name?)
Аргументы
name? (string): имя эффекта
Возвращает
Effect: Контейнер для асинхронных функций.
createStore(defaultState)
Аргументы
defaultState(State): дефолтное состояние стора
Возвращает
Store: Новый стор
createDomain(name?)
Аргументы
name? (string): имя домена
Возвращает
Domain: Новый домен
history
Содержит изменяемый набор юнитов только для чтения внутри домена.
Формула
const { stores, events, domains, effects } = domain.history;- Когда любой из юнитов создается внутри домена, он появляется в наборе с именем типа в порядке создания.
import { createDomain } from "effector";const domain = createDomain();const eventA = domain.event();const $storeB = domain.store(0);console.log(domain.history);// => {stores: Set{storeB}, events: Set{eventA}, domains: Set, effects: Set}Псевдонимы
event(name?)
Псевдоним для domain.createEvent
effect(name?)
Псевдоним для domain.createEffect
store(defaultState)
Псевдоним для domain.createStore
domain(name?)
Псевдоним для domain.createDomain
Хуки доменов
onCreateEvent(hook)
Формула
domain.onCreateEvent((event) => {});- Функция переданная в
onCreateEventвызывается каждый раз, когда создается новое событие вdomain - Первый аргумент вызываемой функции
event - Результат вызова функции игнорируется
Аргументы
hook(Watcher): Функция, которая принимает Event и будет вызвана во время каждого вызова domain.createEvent
Возвращает
Subscription: Функция для отписки.
Пример
import { createDomain } from "effector";
const domain = createDomain();
domain.onCreateEvent((event) => { console.log("новое событие создано");});
const a = domain.createEvent();// => новое событие создано
const b = domain.createEvent();// => новое событие созданоonCreateEffect(hook)
Формула
domain.onCreateEffect((effect) => {});- Функция переданная в
onCreateEffectвызывается каждый раз, когда создается новый эффект вdomain - Первый аргумент вызываемой функции
effect - Результат вызова функции игнорируется
Аргументы
hook(Watcher): Функция, которая принимает Effect и будет вызвана во время каждого вызова domain.createEffect
Возвращает
Subscription: Функция для отписки.
Пример
import { createDomain } from "effector";
const domain = createDomain();
domain.onCreateEffect((effect) => { console.log("новый эффект создан");});
const fooFx = domain.createEffect();// => новый эффект создан
const barFx = domain.createEffect();// => новый эффект созданonCreateStore(hook)
Формула
domain.onCreateStore(($store) => {});- Функция переданная в
onCreateStoreвызывается каждый раз, когда создается новый стор вdomain - Первый аргумент вызываемой функции
$store - Результат вызова функции игнорируется
Аргументы
hook(Watcher): Функция, которая принимает Store и будет вызвана во время каждого вызова domain.createStore
Возвращает
Subscription: Функция для отписки.
Пример
import { createDomain } from "effector";
const domain = createDomain();
domain.onCreateStore((store) => { console.log("новый стор создан");});
const $a = domain.createStore(null);// => новый стор созданonCreateDomain(hook)
Формула
domain.onCreateDomain((domain) => {});- Функция переданная в
onCreateDomainвызывается каждый раз, когда создается новый поддомен вdomain - Первый аргумент вызываемой функции
domain - Результат вызова функции игнорируется
Аргументы
hook(Watcher): Функция, которая принимает Domain и будет вызвана во время каждого вызова domain.createDomain
Возвращает
Subscription: Функция для отписки.
Пример
import { createDomain } from "effector";
const domain = createDomain();
domain.onCreateDomain((domain) => { console.log("новый домен создан");});
const a = domain.createDomain();// => новый домен создан
const b = domain.createDomain();// => новый домен созданДокументация на английском языке - самая актуальная, поскольку её пишет и обновляет команда effector. Перевод документации на другие языки осуществляется сообществом по мере наличия сил и желания.
Помните, что переведенные статьи могут быть неактуальными, поэтому для получения наиболее точной и актуальной информации рекомендуем использовать оригинальную англоязычную версию документации.