千锋教育-做有情怀、有良心、有品质的职业教育机构
由于使用单一状态树,应用的所有状态会集中到一个比较大的对象。当应用变得非常复杂时,store 对象就有可能变得相当臃肿。
为了解决以上问题,Vuex 允许我们将 store 分割成模块(module)。每个模块拥有自己的 state、mutation、action、getter、甚至是嵌套子模块——从上至下进行同样方式的分割:
vuex模块化后,需要另一个模块的state变化,可以在这个模块中定义getters 获取,具体代码如下
// 模块a
const modulea = {
namespaced: true,
state: {
num: 10
},
mutations: {
ADD_NUM(state, n) {
state.num += n
}
}
}
// 模块b
const moduleb = {
namespaced: true,
state: {
num: 10
},
getters: {
// 在这里拿到 模块a numstate
moduleaNum (state, getters, rootState, rootGetters) {
// 模块下的getter有四个参数分别是当前模块的state,当前模块的getters,以及根state个根getters可以通过rootState获取其他模块的state
return rootState.modulea.num
}
},
mutations: {
ADD_NUM(state, n) {
state.num += n
}
}
}
下一篇
说说Vuex的工作流程相关推荐