Способ массового создания событий-команд для обновления стора на основе объекта с функциями-обработчиками. Если стор принадлежит какому-либо домену, то новые события также будут принадлежать ему
Формула
declare const $store: Store<T>; // управляемый стор
const api: { event1: Event<S>; // созданное событие-команда event2: Event<Q>; // созданное событие-команда} = createApi( /*store*/ $store, /*handlers*/ { event1: /*handler*/ (state: T, data: S) => T, event2: /*handler*/ (state: T, data: Q) => T, },);
Аргументы
-
store
: Стор, чьим значением требуется управлять -
handlers
: Объект с функциями-обработчиками, на каждую функцию будет создано по событиюhandler
:(state: T, data: S) => T
Функция-обработчик, которая будет вычислять новое состояние
стора
на основе его предыдущего состояния и данных, отправленных в полученное событие-команду, должна быть чистойАргументы
state
: Текущее состояние стораdata
: Значение, с которым было вызвано событие
Возвращает
Новое значение для хранения в
сторе
. Если функция возвращает undefined или текущее состояние стора, то обновления не будет
Возвращает
Объект с событиями, по событию на каждый переданный обработчик
Примеры
Управление позицией игрока
import { createStore, createApi } from "effector";
const playerPosition = createStore(0);
const api = createApi(playerPosition, { moveLeft: (pos, n) => pos - n, moveRight: (pos, n) => pos + n,});
playerPosition.watch((pos) => { console.log("position", pos);});// => position 0
api.moveRight(10);// => position 10
api.moveLeft(5);// => position 5
Документация на английском языке - самая актуальная, поскольку её пишет и обновляет команда effector. Перевод документации на другие языки осуществляется сообществом по мере наличия сил и желания.
Помните, что переведенные статьи могут быть неактуальными, поэтому для получения наиболее точной и актуальной информации рекомендуем использовать оригинальную англоязычную версию документации.