Domain (домен) - это способ группировки и массовой обработки юнитов.

Домен может подписываться на создание события, эффекта, стора или вложенного домена с помощью методов onCreateEvent, onCreateStore, onCreateEffect, onCreateDomain.

Может использоваться для логирования или других сайд эффектов.

Методы для создания юнитов

createEvent(name?)

Аргументы

  1. name? (string): имя события

Возвращает

Event: Новое событие

createEffect(handler?)

Создает эффект с переданным обработчиком

Аргументы

  1. handler? (Function): функция для обработки вызова эффектов, также может быть установленна с помощью use(handler)

Возвращает

Effect: Контейнер для асинхронных функций.

createEffect(name?)

Аргументы

  1. name? (string): имя эффекта

Возвращает

Effect: Контейнер для асинхронных функций.

createStore(defaultState)

Аргументы

  1. defaultState (State): дефолтное состояние стора

Возвращает

Store: Новый стор

createDomain(name?)

Аргументы

  1. 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
  • Результат вызова функции игнорируется

Аргументы

  1. 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
  • Результат вызова функции игнорируется

Аргументы

  1. 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
  • Результат вызова функции игнорируется

Аргументы

  1. 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
  • Результат вызова функции игнорируется

Аргументы

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

Помните, что переведенные статьи могут быть неактуальными, поэтому для получения наиболее точной и актуальной информации рекомендуем использовать оригинальную англоязычную версию документации.

Соавторы