学习笔记——Vuex状态管理 命名空间

1,022 阅读1分钟

写在前面:对vuex学习的一点记录

默认情况下,模块内部的 action、mutation 和 getter 是注册在全局命名空间的——这样使得多个模块能够对同一 mutation 或 action 作出响应,即,如果不同模块中有同名的 mutation,Vuex 不会报错,通过 store.commit 调用,会依次触发所有同名 mutation。

如果希望模块具有更高的封装度和复用性,你可以通过添加 namespaced: true 的方式使其成为带命名空间的模块。当模块被注册后,它的所有 getter、action 及 mutation 都会自动根据模块注册的路径调整命名。

const module1 = {
    namespaced: true, // 增加命名空间控制
    state: { ... }, // 模块内的状态已经是嵌套的了,使用 `namespaced` 属性不会对其产生影响
    mutations: {
        login () { ... } // -> 使用时,commit('module1/login')
    }
};
export default module1; // 此处不能写成 `export default { module1 };` ,否则会报错,无法识别该模块内的状态

// 使用命名空间后,模块引用无法定义别名,只能使用初始定义名称