vuex-help
Version:
a utilies library reduce boilerplate for vuex
217 lines (130 loc) • 12.9 kB
Markdown
# Справочник API
### Vuex.Store
``` js
import Vuex from 'vuex'
const store = new Vuex.Store({ ...options })
```
### Опции конструктора Vuex.Store
- **state**
- тип: `Object | Function`
Корневой объект состояния хранилища Vuex. [Подробнее](state.md)
Если вы передаёте функцию, возвращающую объект, то возвращаемый объект будет использован в качестве корневого состояния. Это может быть полезным, если вы хотите повторно использовать объект состояния, особенно при повторном использовании модулей. [Подробнее](modules.md#повторное-использование-модулей)
- **mutations**
- тип: `{ [type: string]: Function }`
Регистрирует доступные для хранилища мутации. Обработчики мутаций первым аргументом всегда получают `state` (при использовании модулей это будет локальный state модуля). Вторым аргументом передаётся "нагрузка" (`payload`), если она есть.
[Подробнее](mutations.md)
- **actions**
- тип: `{ [type: string]: Function }`
Регистрирует действия хранилища. В функции-обработчики передаётся объект `context`, со следующими свойствами:
``` js
{
state, // то же, что и `store.state`, или локальный state при использовании модулей
rootState, // то же, что и `store.state`, только при использовании модулей
commit, // то же, что и `store.commit`
dispatch, // то же, что и `store.dispatch`
getters, // то же, что и `store.getters`
rootGetters // то же, что и `store.getters`, только в модулях
}
```
[Подробнее](actions.md)
- **getters**
- тип: `{ [key: string]: Function }`
Регистрирует геттеры, используемые в хранилище. Геттер-функции при вызове получают следующие аргументы:
```
state, // при использовании модулей — локальный state модуля
getters // то же, что и store.getters
```
При определении в модуле
```
state, // при использовании модулей — локальный state модуля
getters, // локальные геттеры текущего модуля
rootState, // глобальный state
rootGetters // все геттеры
```
Зарегистрированные геттеры далее доступны в `store.getters`.
[Подробнее](getters.md)
- **modules**
- тип: `Object`
Объект, содержащий подмодули для помещения в хранилище, в формате:
``` js
{
key: {
state,
namespaced?,
mutations?,
actions?,
getters?,
modules?
},
...
}
```
Каждый модуль может содержать `state` и `mutations`, как и корневое хранилище. Состояние модуля будет прикреплено к корневому, по указанному ключу. Мутации и геттеры модуля получают при вызове первым аргументом только локальное состояние, а не корневое. При вызове действий `context.state` аналогичным образом указывает на локальное состояние модуля.
[Подробнее](modules.md)
- **plugins**
- тип: `Array<Function>`
Массив функций-плагинов, которые будут применены к хранилищу. Плагины попросту получают хранилище в качестве единственного аргумента, и могут как отслеживать мутации (для сохранения исходящих данных, логирования или отладки) или инициировать их (для обработки входящих данных, например, веб-сокетов или наблюдателей).
[Подробнее](plugins.md)
- **strict**
- тип: `Boolean`
- default: `false`
Заставляет хранилище Vuex использовать strict mode. В strict mode любые изменения состояния, происходящие за пределами обработчиков мутаций, будут выбрасывать ошибки.
[Подробнее](strict.md)
### Свойства экземпляра Vuex.Store
- **state**
- тип: `Object`
Корневое состояние. Только для чтения.
- **getters**
- тип: `Object`
Зарегистрированные геттеры. Только для чтения.
### Методы экземпляра Vuex.Store
- **`commit(type: string, payload?: any, options?: Object) | commit(mutation: Object, options?: Object)`**
Запускает мутацию. `options` может содержать опцию `root: true` что разрешает совершать корневые (root) мутации [в модулях со своим пространством имён](modules.md#пространства-имён). [Подробнее](mutations.md)
- **`dispatch(type: string, payload?: any, options?: Object) | dispatch(action: Object, options?: Object)`**
Инициирует действие. `options` может содержать опцию `root: true` что разрешает совершать корневые (root) действия [в модулях со своим пространством имён](modules.md#пространства-имён). Возвращает Promise который разрешает все обработчики инициируемых действий. [Подробнее](actions.md)
- **`replaceState(state: Object)`**
Позволяет заменить корневое состояние хранилища. Используйте только для гидрации состояния / функциональности "машины времени".
- **`watch(getter: Function, cb: Function, options?: Object)`**
Устанавливает наблюдение за возвращаемым значением геттера, вызывая коллбэк в случае его изменения. Геттер получает состояние хранилища первым аргументом, и геттеры вторым аргументом. Возможно указание дополнительного объекта опций, с такими же параметрами как и у метода `vm.$watch` корневой библиотеки Vue.
Для прекращения наблюдения, необходимо вызвать возвращаемую функцию обработчик.
- **`subscribe(handler: Function)`**
Подписывается на мутации хранилища. Обработчик `handler` вызывается после каждой мутации и получает в качестве параметров дескриптор мутации и состояние после мутации:
``` js
store.subscribe((mutation, state) => {
console.log(mutation.type)
console.log(mutation.payload)
})
```
Чаще всего используется в плагинах. [Подробнее](plugins.md)
- **`subscribeAction(handler: Function)`**
> Добавлено в версии 2.5.0
Подписывается на действие хранилища. Обработчик `handler` вызывается после каждого действия и получает в качестве параметров дескриптов действия и текущее состояние хранилища:
``` js
store.subscribeAction((action, state) => {
console.log(action.type)
console.log(action.payload)
})
```
Чаще всего используется в плагинах. [Подробнее](plugins.md)
- **`registerModule(path: string | Array<string>, module: Module, options?: Object)`**
Регистрирует динамический модуль. [Подробнее](modules.md#динамическая-регистрация-модулей)
`options` может иметь опцию `preserveState: true`, что позволяет сохранить предыдущее состояние. Полезно с рендерингом на стороне сервера.
- **`unregisterModule(path: string | Array<string>)`**
Разрегистрирует динамический модуль. [Подробнее](modules.md#динамическая-регистрация-модулей)
- **`hotUpdate(newOptions: Object)`**
Осуществляет горячую замену действий и мутаций. [Подробнее](hot-reload.md)
### Вспомогательные функции для связывания с компонентами
- **`mapState(namespace?: string, map: Array<string> | Object): Object`**
Создаёт проксирующие вычисляемые свойства компонента, возвращающие поддерево state'а хранилища Vuex [Подробнее](state.md#вспомогательная-функция-mapstate)
Первый аргумент опционально может быть строкой с указанным namespace. [Подробнее](modules.md#подключение-с-помощью-вспомогательных-функций-к-пространству-имён)
- **`mapGetters(namespace?: string, map: Array<string> | Object): Object`**
Создаёт проксирующие вычисляемые свойства компонента, проксирующие доступ к геттерам. [Подробнее](getters.md#вспомогательная-функция-mapgetters)
Первый аргумент опционально может быть строкой с указанным namespace. [Подробнее](modules.md#подключение-с-помощью-вспомогательных-функций-к-пространству-имён)
- **`mapActions(namespace?: string, map: Array<string> | Object): Object`**
Создаёт проксирующие методы компонента, позволяющие диспетчеризировать действия. [Подробнее](actions.md#диспетчеризация-действий-в-компонентах)
Первый аргумент опционально может быть строкой с указанным namespace. [Подробнее](modules.md#подключение-с-помощью-вспомогательных-функций-к-пространству-имён)
- **`mapMutations(namespace?: string, map: Array<string> | Object): Object`**
Создаёт проксирующие методы компонента, позволяющие инициировать мутации. [Подробнее](mutations.md#вызов-мутаций-в-компонентах)
Первый аргумент опционально может быть строкой с указанным namespace. [Подробнее](modules.md#подключение-с-помощью-вспомогательных-функций-к-пространству-имён)
- **`createNamespacedHelpers(namespace: string): Object`**
Создаёт вспомогательные функции для связывания с компонентами для указанного пространства имён. Возвращаемый объект содержит `mapState`, `mapGetters`, `mapActions` и `mapMutations`, которые связаны с указанным пространством имён. [Подробнее](modules.md#подключение-с-помощью-вспомогательных-функций-к-пространству-имён)