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. Перевод документации на другие языки осуществляется сообществом по мере наличия сил и желания.
Помните, что переведенные статьи могут быть неактуальными, поэтому для получения наиболее точной и актуальной информации рекомендуем использовать оригинальную англоязычную версию документации.