createApi
Способ массового создания событий-команд для обновления стора на основе объекта с функциями-обработчиками. Если стор принадлежит какому-либо домену, то новые события также будут принадлежать ему
Формула
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
Функция-обработчик, которая будет вычислять новое состояние
store
на основе его предыдущего состояния и данных, отправленных в полученное событие-команду, должна быть чистойАргументы
state
: Текущее состояние стораdata
: Значение, с которым было вызвано событие
Возвращает
Новое значение для хранения в
store
. Если функция возвращает 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