Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式与库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex 使得管理复杂组件状态变得简单,同时提高了应用的性能。
一、安装 Vuex
首先,你需要在项目中安装 Vuex。你可以使用 npm 或 yarn 进行安装:
npm install vuex --save
或
yarn add vuex
二、创建 Vuex store
接下来,你需要创建一个 Vuex store。
store 是一个包含状态、突变、操作和获取ters状态的组件。
-
在项目根目录下创建一个名为
store
的文件夹。 -
在
store
文件夹下创建一个名为index.js
的文件。这个文件将包含我们的 store 配置。 -
在
store
文件夹下创建一个名为mutations.js
的文件。这个文件将包含我们的突变。 -
在
store
文件夹下创建一个名为actions.js
的文件。这个文件将包含我们的操作。 -
在
store
文件夹下创建一个名为getters.js
的文件。这个文件将包含我们的 getters。 -
在
store
文件夹下创建一个名为modules.js
的文件。这个文件将包含我们的模块。 -
在
store
文件夹下创建一个名为state.js
的文件。这个文件将包含我们的状态。 -
在
store
文件夹下创建一个名为index.js
的文件。这个文件将导入我们刚刚创建的所有文件,并将它们组合成一个 store。
下面是一个简单的 Vuex store 示例:
// store/index.js
import Vue from 'vue';
import Vuex from 'vuex';
import state from './state';
import mutations from './mutations';
import actions from './actions';
import getters from './getters';
import modules from './modules';
Vue.use(Vuex);
export default new Vuex.Store({
state,
mutations,
actions,
getters,
modules
});
三、配置 Vuex store
接下来,你需要配置 Vuex store。在 store/index.js
文件中,你需要导入 state
、mutations
、actions
、getters
和 modules
。然后,你需要将它们添加到 store 中。
例如:
// store/index.js
import Vue from 'vue';
import Vuex from 'vuex';
import state from './state';
import mutations from './mutations';
import actions from './actions';
import getters from './getters';
import modules from './modules';
Vue.use(Vuex);
export default new Vuex.Store({
state,
mutations,
actions,
getters,
modules
});
四、创建 Vuex state
接下来,你需要创建 Vuex state。state 是 store 中保存应用状态的地方。在 store/state.js
文件中,你需要定义状态变量。
例如:
// store/state.js
export default {
count: 0
};
五、创建 Vuex mutations
mutations 是用于操作 state 的方法。在 store/mutations.js
文件中,你需要定义这些方法。
例如:
// store/mutations.js
export function increment() {
state.count++;
}
export function decrement() {
state.count--;
}
六、创建 Vuex actions
actions 是用于异步操作 state 的方法。在 store/actions.js
文件中,你需要定义这些方法。
例如:
// store/actions.js
import axios from 'axios';
export function incrementAsync() {
axios.get('/api/increment')
.then(response => {
state.count++;
});
}
export function decrementAsync() {
axios.get('/api/decrement')
.then(response