vuex模块化关键在于开启namespaced: true并统一访问规范,否则模块内api会与全局或其他模块冲突;需用createnamespacedhelpers或带命名空间的map辅助函数,禁止跨模块直接修改state。

Vuex 模块化不是“加个 modules 就完事”,关键在于命名空间(namespaced: true)的开启和统一访问规范,否则模块内 action、mutation、getter 仍会和根空间或其他模块冲突。
模块必须开启 namespaced
每个模块默认处于全局命名空间,即使放在 modules 对象里,不显式声明 namespaced: true,它的 type 字符串(如 'SET_USER')依然可能覆盖或被其他模块覆盖。
- 在模块对象中第一层写
namespaced: true(布尔值,不能是字符串) - 开启后,该模块所有 mutation、action、getter 的调用都必须带模块路径前缀,例如
user/SET_USER - 不开启 namespaced,Vuex 会把模块内的 type 直接注册到全局,极易引发同名覆盖
统一使用带命名空间的辅助函数
避免手写冗长的 type 字符串,推荐用 createNamespacedHelpers 或按需解构:
vue-composition-api-best-practices
Vue 3 组合式 API 与
热门下载
相关下载
精品课程
相关推荐
/
热门推荐
/
最新课程
最新文章
