【问题标题】:Do vuex modules still require namespacing?vuex 模块还需要命名空间吗?
【发布时间】:2023-03-19 18:54:02
【问题描述】:

我已经建立了一个包含多个模块的相当大的 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 中属于它自己的属性,这不是模块本身之间可能发生的唯一冲突,这可以通过文件的简单命名约定轻松避免?

我在这里错过了什么?

【问题讨论】:

    标签: vue.js vuejs2 vue-component vuex


    【解决方案1】:

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

    不,你误会了。状态本身具有适当的命名空间,但突变、动作和 getter 仍然在全局级别上收集,因此您可以例如分派一个 Action,来自不同模块的多个 Action 对其做出反应。

    这是默认行为,但好消息是,可以选择命名空间突变、操作和 getter:“namespaced: true”。

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

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

    【讨论】:

    • 感谢您的解释,这已经很清楚了。
    猜你喜欢
    • 2020-05-07
    • 1970-01-01
    • 2018-03-26
    • 2020-07-14
    • 2018-12-31
    • 2018-10-03
    • 2020-03-29
    • 2019-03-22
    • 2020-09-27
    相关资源
    最近更新 更多