vuex就是使用一个store对象包含所有的应用层级状态(所有数据的来源)。
store 的四个属性:state, getters, mutations, actions 。
分解如下:
1、State(仓库):就是存放的变量的,放在state={}对象里。可以使用 mapState 辅助函数帮助我们生成计算属性。
换句话说,整个APP的数据就是存放在
state
对象里,随取随用。 2.getters上简单来说就是存放一些公共函数供组件调用。需要对store中的数据进行处理,或者进行重复使用,getters可以理解为vue的计算属性。
getters
获取 store
当中的数据作予组件使用,但是这个属性我在项目中不是特别常用。我一般都是这样获取 computed: {
...mapGetters([
‘testDate'
])
}
例子:
let store = new Vuex.Store({
state: {
testData: 123
},
getters: {
dateCount(state, getters) {
let date = state.testDate;
return `data+1`;
}
}
});
或者
let { mapGetters } from 'Vuex';
let comonent = {
computed: {
...mapGetters([
‘testDate'
])
}
};
注:actions使用
store.commit
方法触发 mutations
改变 state
3.在vuex不能直接对state进行操作,所以需要提交mutation,mutation类似于vue的method事件。调用的时候有所差距,需要使用commit。所以 mutations 上存放的一般就是我们要改变 state 的一些方法。
每一个 mutation 都有一个字符串的事件类型和一个回调函数,通常在回调函数里进行操作,
store.commit('increment')
我们可以把
mutations
理解为“用于改变 state
状态的一系列方法”。在 vuex
的概念里, state
仅能通过 mutation
修改,这样的好处是能够更直观清晰地集中管理应用的状态,而不是把数据扔得到处都是。 4.mutation 像事件注册,需要相应的触发条件。而 Action 就那个管理触发条件的。Action 函数接受一个与 store 实例具有相同方法和属性的 context 对象,
因此你可以调用 context.commit 提交一个 mutation,或者通过 context.state 和 context.getters 来获取 state 和 getters。
actions
的两个方法负责把数据分发到 store
中供 mutation
使用 学习链接: