本帖最后由 ing 于 2020-7-19 15:43 编辑
你可以通过添加 namespaced: true 的方式使其成为带命名空间的模块。当模块被注册后,它的所有 getter、action 及 mutation 都会自动根据模块注册的路径调整命名 模块 moduleA.js 添加 namespaced: true 使其成为带命名空间的模块
export default {
namespaced: true,
state: {
text: 'moduleA'
},
getters: {
detail(state, getters, rootState) {
return state.text + '-' + rootState.name;
}
},
mutations: {
setName(state, newName) {
state.name = newName;
}
},
actions: {
callAction({ dispatch, commit, getters }){
// 在带命名空间的模块内访问全局内容
commit('setName','change',{root:true});
console.log("dispatch.text-getters.name:"+dispatch.text+"-"+getters.name);
}
}
}
我不理解,他已经是带命名空间的模块了,为什么 mutation 却是全局命名空间?需要在 callAction->commit 传入第三个参数 {root:true} 才可以访问到 mutations 下的 setName 方法
如果 mutation 也是带命名空间,那么我应该是不需要传入参数 {root:true}
参考
https://vuex.vuejs.org/zh/guide/modules.html
https://www.jianshu.com/p/83d5677b0928 |