vuex-help
Version:
a utilies library reduce boilerplate for vuex
559 lines (324 loc) • 55.1 kB
HTML
<!DOCTYPE HTML>
<html lang="ru" >
<head>
<meta charset="UTF-8">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<title>Справочник API · Vuex</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="description" content="">
<meta name="generator" content="GitBook 3.2.3">
<link rel="stylesheet" href="../gitbook/style.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-prism/prism.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-search/search.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-theme-vuejs/vue.css">
<meta name="HandheldFriendly" content="true"/>
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<link rel="apple-touch-icon-precomposed" sizes="152x152" href="../gitbook/images/apple-touch-icon-precomposed-152.png">
<link rel="shortcut icon" href="../gitbook/images/favicon.ico" type="image/x-icon">
<link rel="prev" href="hot-reload.html" />
</head>
<body>
<div class="book">
<div class="book-summary">
<div id="book-search-input" role="search">
<input type="text" placeholder="Введите условия поиска" />
</div>
<nav role="navigation">
<script async type="text/javascript" src="//cdn.carbonads.com/carbon.js?zoneid=1673&serve=C6AILKT&placement=vuejs" id="_carbonads_js"></script>
<ul class="summary">
<li class="chapter " data-level="1.1" data-path="./">
<a href="./">
Introduction
</a>
</li>
<li class="chapter " data-level="1.2" >
<a target="_blank" href="https://github.com/vuejs/vuex/releases">
История изменений
</a>
</li>
<li class="chapter " data-level="1.3" data-path="installation.html">
<a href="installation.html">
Установка
</a>
</li>
<li class="chapter " data-level="1.4" data-path="intro.html">
<a href="intro.html">
Что такое Vuex?
</a>
</li>
<li class="chapter " data-level="1.5" data-path="getting-started.html">
<a href="getting-started.html">
Начало работы
</a>
</li>
<li class="chapter " data-level="1.6" data-path="core-concepts.html">
<a href="core-concepts.html">
Основные понятия
</a>
<ul class="articles">
<li class="chapter " data-level="1.6.1" data-path="state.html">
<a href="state.html">
Состояние
</a>
</li>
<li class="chapter " data-level="1.6.2" data-path="getters.html">
<a href="getters.html">
Геттеры
</a>
</li>
<li class="chapter " data-level="1.6.3" data-path="mutations.html">
<a href="mutations.html">
Мутации
</a>
</li>
<li class="chapter " data-level="1.6.4" data-path="actions.html">
<a href="actions.html">
Действия
</a>
</li>
<li class="chapter " data-level="1.6.5" data-path="modules.html">
<a href="modules.html">
Модули
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.7" data-path="structure.html">
<a href="structure.html">
Структура приложения
</a>
</li>
<li class="chapter " data-level="1.8" data-path="plugins.html">
<a href="plugins.html">
Плагины
</a>
</li>
<li class="chapter " data-level="1.9" data-path="strict.html">
<a href="strict.html">
Строгий режим (strict mode)
</a>
</li>
<li class="chapter " data-level="1.10" data-path="forms.html">
<a href="forms.html">
Обработка форм
</a>
</li>
<li class="chapter " data-level="1.11" data-path="testing.html">
<a href="testing.html">
Тестирование
</a>
</li>
<li class="chapter " data-level="1.12" data-path="hot-reload.html">
<a href="hot-reload.html">
Горячая замена
</a>
</li>
<li class="chapter active" data-level="1.13" data-path="api.html">
<a href="api.html">
Справочник API
</a>
</li>
<li class="divider"></li>
<li>
<a href="https://www.gitbook.com" target="blank" class="gitbook-link">
Опубликовано с помощью GitBook
</a>
</li>
</ul>
</nav>
</div>
<div class="book-body">
<div class="body-inner">
<div class="book-header" role="navigation">
<!-- Title -->
<h1>
<i class="fa fa-circle-o-notch fa-spin"></i>
<a href="." >Справочник API</a>
</h1>
</div>
<div class="page-wrapper" tabindex="-1" role="main">
<div class="page-inner">
<div id="book-search-results">
<div class="search-noresults">
<section class="normal markdown-section">
<h1 id="справочник-api">Справочник API</h1>
<h3 id="vuexstore">Vuex.Store</h3>
<pre class="language-"><code class="lang-js"><span class="token keyword">import</span> Vuex <span class="token keyword">from</span> <span class="token string">'vuex'</span>
<span class="token keyword">const</span> store <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Vuex<span class="token punctuation">.</span>Store</span><span class="token punctuation">(</span><span class="token punctuation">{</span> <span class="token operator">...</span>options <span class="token punctuation">}</span><span class="token punctuation">)</span>
</code></pre>
<h3 id="опции-конструктора-vuexstore">Опции конструктора Vuex.Store</h3>
<ul>
<li><p><strong>state</strong></p>
<ul>
<li><p>тип: <code>Object | Function</code></p>
<p>Корневой объект состояния хранилища Vuex. <a href="state.html">Подробнее</a></p>
<p>Если вы передаёте функцию, возвращающую объект, то возвращаемый объект будет использован в качестве корневого состояния. Это может быть полезным, если вы хотите повторно использовать объект состояния, особенно при повторном использовании модулей. <a href="modules.html#повторное-использование-модулей">Подробнее</a></p>
</li>
</ul>
</li>
<li><p><strong>mutations</strong></p>
<ul>
<li><p>тип: <code>{ [type: string]: Function }</code></p>
<p>Регистрирует доступные для хранилища мутации. Обработчики мутаций первым аргументом всегда получают <code>state</code> (при использовании модулей это будет локальный state модуля). Вторым аргументом передаётся "нагрузка" (<code>payload</code>), если она есть.</p>
<p><a href="mutations.html">Подробнее</a></p>
</li>
</ul>
</li>
<li><p><strong>actions</strong></p>
<ul>
<li><p>тип: <code>{ [type: string]: Function }</code></p>
<p>Регистрирует действия хранилища. В функции-обработчики передаётся объект <code>context</code>, со следующими свойствами:</p>
<pre class="language-"><code class="lang-js"><span class="token punctuation">{</span>
state<span class="token punctuation">,</span> <span class="token comment" spellcheck="true">// то же, что и `store.state`, или локальный state при использовании модулей</span>
rootState<span class="token punctuation">,</span> <span class="token comment" spellcheck="true">// то же, что и `store.state`, только при использовании модулей</span>
commit<span class="token punctuation">,</span> <span class="token comment" spellcheck="true">// то же, что и `store.commit`</span>
dispatch<span class="token punctuation">,</span> <span class="token comment" spellcheck="true">// то же, что и `store.dispatch`</span>
getters<span class="token punctuation">,</span> <span class="token comment" spellcheck="true">// то же, что и `store.getters`</span>
rootGetters <span class="token comment" spellcheck="true">// то же, что и `store.getters`, только в модулях</span>
<span class="token punctuation">}</span>
</code></pre>
<p><a href="actions.html">Подробнее</a></p>
</li>
</ul>
</li>
<li><p><strong>getters</strong></p>
<ul>
<li><p>тип: <code>{ [key: string]: Function }</code></p>
<p>Регистрирует геттеры, используемые в хранилище. Геттер-функции при вызове получают следующие аргументы:</p>
<pre class="language-"><code>state, // при использовании модулей — локальный state модуля
getters // то же, что и store.getters
</code></pre><p>При определении в модуле</p>
<pre class="language-"><code>state, // при использовании модулей — локальный state модуля
getters, // локальные геттеры текущего модуля
rootState, // глобальный state
rootGetters // все геттеры
</code></pre><p>Зарегистрированные геттеры далее доступны в <code>store.getters</code>.</p>
<p><a href="getters.html">Подробнее</a></p>
</li>
</ul>
</li>
<li><p><strong>modules</strong></p>
<ul>
<li><p>тип: <code>Object</code></p>
<p>Объект, содержащий подмодули для помещения в хранилище, в формате:</p>
<pre class="language-"><code class="lang-js"><span class="token punctuation">{</span>
key<span class="token punctuation">:</span> <span class="token punctuation">{</span>
state<span class="token punctuation">,</span>
namespaced<span class="token operator">?</span><span class="token punctuation">,</span>
mutations<span class="token operator">?</span><span class="token punctuation">,</span>
actions<span class="token operator">?</span><span class="token punctuation">,</span>
getters<span class="token operator">?</span><span class="token punctuation">,</span>
modules<span class="token operator">?</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token operator">...</span>
<span class="token punctuation">}</span>
</code></pre>
<p>Каждый модуль может содержать <code>state</code> и <code>mutations</code>, как и корневое хранилище. Состояние модуля будет прикреплено к корневому, по указанному ключу. Мутации и геттеры модуля получают при вызове первым аргументом только локальное состояние, а не корневое. При вызове действий <code>context.state</code> аналогичным образом указывает на локальное состояние модуля.</p>
<p><a href="modules.html">Подробнее</a></p>
</li>
</ul>
</li>
<li><p><strong>plugins</strong></p>
<ul>
<li><p>тип: <code>Array<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>Function</span><span class="token punctuation">></span></span></code></p>
<p>Массив функций-плагинов, которые будут применены к хранилищу. Плагины попросту получают хранилище в качестве единственного аргумента, и могут как отслеживать мутации (для сохранения исходящих данных, логирования или отладки) или инициировать их (для обработки входящих данных, например, веб-сокетов или наблюдателей).</p>
<p><a href="plugins.html">Подробнее</a></p>
</li>
</ul>
</li>
<li><p><strong>strict</strong></p>
<ul>
<li>тип: <code>Boolean</code></li>
<li><p>default: <code>false</code></p>
<p>Заставляет хранилище Vuex использовать strict mode. В strict mode любые изменения состояния, происходящие за пределами обработчиков мутаций, будут выбрасывать ошибки.</p>
<p><a href="strict.html">Подробнее</a></p>
</li>
</ul>
</li>
</ul>
<h3 id="свойства-экземпляра-vuexstore">Свойства экземпляра Vuex.Store</h3>
<ul>
<li><p><strong>state</strong></p>
<ul>
<li><p>тип: <code>Object</code></p>
<p>Корневое состояние. Только для чтения.</p>
</li>
</ul>
</li>
<li><p><strong>getters</strong></p>
<ul>
<li><p>тип: <code>Object</code></p>
<p>Зарегистрированные геттеры. Только для чтения.</p>
</li>
</ul>
</li>
</ul>
<h3 id="методы-экземпляра-vuexstore">Методы экземпляра Vuex.Store</h3>
<ul>
<li><p><strong><code>commit(type: string, payload?: any, options?: Object) | commit(mutation: Object, options?: Object)</code></strong></p>
<p>Запускает мутацию. <code>options</code> может содержать опцию <code>root: true</code> что разрешает совершать корневые (root) мутации <a href="modules.html#пространства-имён">в модулях со своим пространством имён</a>. <a href="mutations.html">Подробнее</a></p>
</li>
<li><p><strong><code>dispatch(type: string, payload?: any, options?: Object) | dispatch(action: Object, options?: Object)</code></strong></p>
<p>Инициирует действие. <code>options</code> может содержать опцию <code>root: true</code> что разрешает совершать корневые (root) действия <a href="modules.html#пространства-имён">в модулях со своим пространством имён</a>. Возвращает Promise который разрешает все обработчики инициируемых действий. <a href="actions.html">Подробнее</a></p>
</li>
<li><p><strong><code>replaceState(state: Object)</code></strong></p>
<p>Позволяет заменить корневое состояние хранилища. Используйте только для гидрации состояния / функциональности "машины времени".</p>
</li>
<li><p><strong><code>watch(getter: Function, cb: Function, options?: Object)</code></strong></p>
<p>Устанавливает наблюдение за возвращаемым значением геттера, вызывая коллбэк в случае его изменения. Геттер получает состояние хранилища первым аргументом, и геттеры вторым аргументом. Возможно указание дополнительного объекта опций, с такими же параметрами как и у метода <code>vm.$watch</code> корневой библиотеки Vue.</p>
<p>Для прекращения наблюдения, необходимо вызвать возвращаемую функцию обработчик.</p>
</li>
<li><p><strong><code>subscribe(handler: Function)</code></strong></p>
<p>Подписывается на мутации хранилища. Обработчик <code>handler</code> вызывается после каждой мутации и получает в качестве параметров дескриптор мутации и состояние после мутации:</p>
<pre class="language-"><code class="lang-js">store<span class="token punctuation">.</span><span class="token function">subscribe</span><span class="token punctuation">(</span><span class="token punctuation">(</span>mutation<span class="token punctuation">,</span> state<span class="token punctuation">)</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">{</span>
console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>mutation<span class="token punctuation">.</span>type<span class="token punctuation">)</span>
console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>mutation<span class="token punctuation">.</span>payload<span class="token punctuation">)</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span>
</code></pre>
<p>Чаще всего используется в плагинах. <a href="plugins.html">Подробнее</a></p>
</li>
<li><p><strong><code>subscribeAction(handler: Function)</code></strong></p>
<blockquote>
<p>Добавлено в версии 2.5.0</p>
</blockquote>
<p>Подписывается на действие хранилища. Обработчик <code>handler</code> вызывается после каждого действия и получает в качестве параметров дескриптов действия и текущее состояние хранилища:</p>
<pre class="language-"><code class="lang-js">store<span class="token punctuation">.</span><span class="token function">subscribeAction</span><span class="token punctuation">(</span><span class="token punctuation">(</span>action<span class="token punctuation">,</span> state<span class="token punctuation">)</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">{</span>
console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>action<span class="token punctuation">.</span>type<span class="token punctuation">)</span>
console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>action<span class="token punctuation">.</span>payload<span class="token punctuation">)</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span>
</code></pre>
<p>Чаще всего используется в плагинах. <a href="plugins.html">Подробнее</a></p>
</li>
<li><p><strong><code>registerModule(path: string | Array<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>string</span><span class="token punctuation">></span></span>, module: Module, options?: Object)</code></strong></p>
<p>Регистрирует динамический модуль. <a href="modules.html#динамическая-регистрация-модулей">Подробнее</a></p>
<p><code>options</code> может иметь опцию <code>preserveState: true</code>, что позволяет сохранить предыдущее состояние. Полезно с рендерингом на стороне сервера.</p>
</li>
<li><p><strong><code>unregisterModule(path: string | Array<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>string</span><span class="token punctuation">></span></span>)</code></strong></p>
<p>Разрегистрирует динамический модуль. <a href="modules.html#динамическая-регистрация-модулей">Подробнее</a></p>
</li>
<li><p><strong><code>hotUpdate(newOptions: Object)</code></strong></p>
<p>Осуществляет горячую замену действий и мутаций. <a href="hot-reload.html">Подробнее</a></p>
</li>
</ul>
<h3 id="вспомогательные-функции-для-связывания-с-компонентами">Вспомогательные функции для связывания с компонентами</h3>
<ul>
<li><p><strong><code>mapState(namespace?: string, map: Array<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>string</span><span class="token punctuation">></span></span> | Object): Object</code></strong></p>
<p>Создаёт проксирующие вычисляемые свойства компонента, возвращающие поддерево state'а хранилища Vuex <a href="state.html#вспомогательная-функция-mapstate">Подробнее</a></p>
<p>Первый аргумент опционально может быть строкой с указанным namespace. <a href="modules.html#подключение-с-помощью-вспомогательных-функций-к-пространству-имён">Подробнее</a></p>
</li>
<li><p><strong><code>mapGetters(namespace?: string, map: Array<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>string</span><span class="token punctuation">></span></span> | Object): Object</code></strong></p>
<p>Создаёт проксирующие вычисляемые свойства компонента, проксирующие доступ к геттерам. <a href="getters.html#вспомогательная-функция-mapgetters">Подробнее</a></p>
<p>Первый аргумент опционально может быть строкой с указанным namespace. <a href="modules.html#подключение-с-помощью-вспомогательных-функций-к-пространству-имён">Подробнее</a></p>
</li>
<li><p><strong><code>mapActions(namespace?: string, map: Array<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>string</span><span class="token punctuation">></span></span> | Object): Object</code></strong></p>
<p>Создаёт проксирующие методы компонента, позволяющие диспетчеризировать действия. <a href="actions.html#диспетчеризация-действий-в-компонентах">Подробнее</a></p>
<p>Первый аргумент опционально может быть строкой с указанным namespace. <a href="modules.html#подключение-с-помощью-вспомогательных-функций-к-пространству-имён">Подробнее</a></p>
</li>
<li><p><strong><code>mapMutations(namespace?: string, map: Array<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>string</span><span class="token punctuation">></span></span> | Object): Object</code></strong></p>
<p>Создаёт проксирующие методы компонента, позволяющие инициировать мутации. <a href="mutations.html#вызов-мутаций-в-компонентах">Подробнее</a></p>
<p>Первый аргумент опционально может быть строкой с указанным namespace. <a href="modules.html#подключение-с-помощью-вспомогательных-функций-к-пространству-имён">Подробнее</a></p>
</li>
<li><p><strong><code>createNamespacedHelpers(namespace: string): Object</code></strong></p>
<p>Создаёт вспомогательные функции для связывания с компонентами для указанного пространства имён. Возвращаемый объект содержит <code>mapState</code>, <code>mapGetters</code>, <code>mapActions</code> и <code>mapMutations</code>, которые связаны с указанным пространством имён. <a href