首页 文章

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

提问于
浏览
4

我已经 Build 了一个包含多个模块的相当大的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 回答

  • 8

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

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

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

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

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

相关问题