2017-07-03 41 views
2

我已经建立了一个具有多个模块的相当大的Vuex项目。vuex模块是否仍然需要命名空间?

https://vuex.vuejs.org/en/modules.html

抢一个getter从search模块一个getter可以像这样来解决的例子:

computed: { 
    filters() { 
     return this.$store.state.search.filters; 
    } 
} 

因为我需要通过引用search属性来访问模块的状态在我的产业链中,我是否还需要命名空间模块?

的文档指出以下几点:

默认情况下,动作,突变和getter内部模块仍然 全局命名空间下注册的 - 这允许多个模块 向相同的突变/动作类型反应。

https://vuex.vuejs.org/en/modules.html#namespacing

但如果模块是根据自己的财产在店里是不是模块本身,它可以很容易通过的文件的简单的命名约定来防止之间可能发生的冲突只?

我在这里错过了什么?

回答

5

但是,如果模块在商店中属于自己的属性不是模块本身之间可能发生的唯一冲突,通过简单的文件命名约定可以轻松防止这种冲突?

不,你误解了。国家本身有适当的命名空间,但突变,行动和获得者仍然在全球范围内收集,因此您可以派遣一个动作和来自不同模块的多个动作对它作出反应。

这是默认行为,但好消息是,有一个命名空间突变,操作和getter的选项:“namespaced:true”。

它记录在这里:https://vuex.vuejs.org/en/modules.html#

向下滚动到 “命名空间” 一节。

+0

感谢您的解释,这使得它很清楚。 –