vuex模块是否还需要命名空间?

时间:2017-07-03 13:23:25

标签: vue.js vuejs2 vue-component 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

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

我在这里缺少什么?

1 个答案:

答案 0 :(得分:9)

  

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

不,你误解了。状态本身是正确的命名空间,但仍然在全局范围内收集突变,动作和获取者,因此您可以例如发送一个动作和来自不同模块的几个动作对它做出反应。

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

在此处记录:https://vuex.vuejs.org/en/modules.html#

向下滚动到“命名空间”部分。