createEvent

import { createEvent } from "effector";
const event = createEvent();

Метод для создания событий.

Формула

createEvent<E = void>(eventName?: string): EventCallable<E>
createEvent<E = void>(config: {
name?: string
sid?: string
domain?: Domain
}): EventCallable<E>
  • Аргументы

    • eventName: Опциональный аргумент. Имя события для отладки.

    • config: Опциональный аргумент. Объект конфигурации.

      • name: Имя события.
      • sid: Стабильный идентификатор для SSR.
      • domain: Домен для события.
  • Возвращаемое значение

Возвращает новое вызываемое событие.

Примеры

Обновление состояния с помощью вызова события:

import { createStore, createEvent } from "effector";
const addNumber = createEvent();
const $counter = createStore(0);
$counter.on(addNumber, (state, number) => state + number);
$counter.watch((state) => {
console.log("state", state);
});
// => 0
addNumber(10);
// => 10
addNumber(10);
// => 20
addNumber(10);
// => 30

Запустить пример

Мы создали событие addNumber и стор $counter, после чего подписались на обновления стора.
Обратите внимание на вызов функции addNumber(10). Всякий раз, когда вы будете вызывать addNumber(10), вы можете посмотреть в консоль и увидеть, как меняется состояние.

Обработка данных с помощью производных событий:

import { createEvent } from "effector";
const extractPartOfArray = createEvent();
const array = extractPartOfArray.map((arr) => arr.slice(2));
array.watch((part) => {
console.log(part);
});
extractPartOfArray([1, 2, 3, 4, 5, 6]);
// => [3, 4, 5, 6]

Запустить пример

Основные ошибки

Ниже приведён список возможных ошибок, с которыми вы можете столкнуться при работе с событиями:

Перевод поддерживается сообществом

Документация на английском языке - самая актуальная, поскольку её пишет и обновляет команда effector. Перевод документации на другие языки осуществляется сообществом по мере наличия сил и желания.

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

Соавторы