vuex 模块还需要命名空间吗?
Posted
技术标签:
【中文标题】vuex 模块还需要命名空间吗?【英文标题】:Do vuex modules still require namespacing? 【发布时间】:2017-12-06 18:57:39 【问题描述】:我已经建立了一个包含多个模块的相当大的 Vuex 项目。
https://vuex.vuejs.org/en/modules.html
要获取 getter 的示例,search
模块中的 getter 可以这样处理:
computed:
filters()
return this.$store.state.search.filters;
因为我需要通过引用属性链中的search
属性来访问模块的状态,我还需要命名我的模块吗?
文档说明如下:
默认情况下,模块内的动作、突变和吸气剂仍然是 在全局命名空间下注册 - 这允许多个模块 对相同的突变/动作类型做出反应。
https://vuex.vuejs.org/en/modules.html#namespacing
但是,如果模块在 store 中属于它自己的属性,这不是模块本身之间可能发生的唯一冲突,这可以通过文件的简单命名约定轻松避免?
我在这里错过了什么?
【问题讨论】:
【参考方案1】:但是,如果模块在 store 中属于它自己的属性,这不是模块本身之间可能发生的唯一冲突,这可以通过文件的简单命名约定轻松避免?
不,你误会了。状态本身具有适当的命名空间,但突变、动作和 getter 仍然在全局级别上收集,因此您可以例如分派一个 Action,来自不同模块的多个 Action 对其做出反应。
这是默认行为,但好消息是,可以选择命名空间突变、操作和 getter:“namespaced: true”。
记录在这里:https://vuex.vuejs.org/en/modules.html#
向下滚动到“命名空间”部分。
【讨论】:
感谢您的解释,这已经很清楚了。以上是关于vuex 模块还需要命名空间吗?的主要内容,如果未能解决你的问题,请参考以下文章