Vuex
lastmod 2022-05-06created 2020-06-1514 edits
Vuex is a state management pattern + library for Vue.js applications. It serves as a centralized store for all the components in an application and lets you change state in a predictable way. It also integrates with Vue's official devtools extension to provide advanced features such as zero-setup debugging and state snapshot export/import.
Architecture
This single diagram explains everything.
Vuex_-_architecture_diagram.png
Global access
Persist, and how to create a store
main.js
store.js
import Vue from "vue";
import Vuex from "vuex";
import { vuexSessionStorage, vuexLocalStorage } from "./persist";
import modules from "./modules";
import local_modules from "./local_modules";
Vue.use(Vuex);
export const sessionStore = new Vuex.Store({
modules,
strict: process.env.NODE_ENV !== "production",
plugins: [vuexSessionStorage.plugin],
});
export const localStore = new Vuex.Store({
modules: local_modules,
strict: process.env.NODE_ENV !== "production",
plugins: [vuexLocalStorage.plugin],
});
modules.js
const files = require.context('.', false, /\.js$/)
const modules = {}
files.keys().forEach(key => {
if (key === './index.js') return
modules[key.replace(/(\.\/|\.js)/g, '')] = files(key).default
})
export default modules
local_modules.js
const files = require.context('.', false, /\.js$/)
const local_modules = {}
files.keys().forEach(key => {
if (key === './index.js') return
local_modules[key.replace(/(\.\/|\.js)/g, '')] = files(key).default
})
export default local_modules
Troubleshooting
do not mutate vuex store state outside mutation handlers
The following is printed in the browser error log:
vue.esm.js?a026:628 [Vue warn]: Error in callback for watcher "function () { return this._data.$$state }": "Error: [vuex] do not mutate vuex store state outside mutation handlers."
Like this:
You must not obtain a store object and modify it directly.
See also
Favorite site
Tutorials
- [Recommended] Getting started with Vuex 1 - Vuex and State • Captain Pangyo
- Getting started with Vuex 2 - Getters and Mutations • Captain Pangyo
- Getting started with Vuex 3 - Actions and folder structuring • Captain Pangyo
Pages that link here
- JavaScript:Libraries
- Pinia
- Vue CLI
- Vue.js
- Vue:Login
- Vue:ProjectTemplate:Vue2 Babel ESLint TypeScript Router Vuex
- Vue:ProjectTemplate:Vue2 Babel ESLint TypeScript Router Vuex Sass
- Vue:ProjectTemplate:Vue2 Babel ESLint TypeScript Router Vuex Sass Jest
- Vue:ProjectTemplate:Vue2 Babel ESLint TypeScript Router Vuex Sass Jest Cypress
- Vue:ProjectTemplate:Vue2 Babel ESLint TypeScript Router Vuex Sass Jest Cypress PWA