Vuex的几个核心概念state、getters、mutations、actions、modules
Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它包含以下几个核心概念:
- State:这是保存应用程序数据的地方。它应该是一个简单的对象,用于保存你的应用程序数据。
const state = {
count: 0
};
- Getters:类似于 Vue 的计算属性,它们用于获取 State 的数据。
const getters = {
doubleCount: state => state.count * 2
};
- Mutations:它们是改变 State 的数据的方法。每个 mutation 都有一个字符串的事件类型和一个回调函数。该回调接收 state 作为第一个参数,提交载荷作为第二个参数。
const mutations = {
INCREMENT(state, payload) {
state.count += payload.amount;
}
};
- Actions:它们用于提交 mutations,而不是直接变更状态。可以包含任意异步操作。
const actions = {
increment({ commit }, payload) {
commit('INCREMENT', payload);
}
};
- Modules:如果状态很大,可以将其拆分为模块。每个模块拥有自己的 state、mutations、actions 和 getters。
const moduleA = {
state: { ... },
mutations: { ... },
actions: { ... },
getters: { ... }
};
这些概念可以组合并应用在 Vuex 应用程序中。以下是一个简单的 Vuex 应用程序的示例:
import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
const state = {
count: 0
};
const getters = {
doubleCount: state => state.count * 2
};
const mutations = {
INCREMENT(state, payload) {
state.count += payload.amount;
}
};
const actions = {
increment({ commit }) {
commit('INCREMENT', { amount: 1 });
}
};
const store = new Vuex.Store({
state,
getters,
mutations,
actions
});
export default store;
在 Vue 应用程序中使用 Vuex 时,可以通过 this.$store
访问 store 实例。例如,可以通过调用 this.$store.dispatch('increment')
来触发 action。
评论已关闭