有没有办法在其操作或突变中获取名称间隔 vuex 模块的名称



我在我的应用程序中有多个 nameSpaced: true 的 vuex modues。在模块的操作或突变中,我想知道父模块的名称。

假设我有 2 个模块,"a"和"b",我称突变为类似

this.$store.commit("a/setName", name);
this.$store.commit("b/setName", name);

现在在 setName 函数中,我想知道调用 nameSpace 是什么?是"A"还是"B"?

目前这对vuex来说仍然是一个悬而未决的问题,正如你在这里看到的:从模块 #1244 中访问模块命名空间。此请求有很多解决方法,但我想根据您提供的代码向您展示一个简单的解决方法。

这:

this.$store.commit("a/setName", name);
this.$store.commit("b/setName", name);

。可能是这样的:

this.$store.dispatch('a/setName', {namespace: "a", data: name})
this.$store.dispatch('b/setName', {namespace: "b", data: name})

是的,这意味着您需要手动应用正在调用的命名空间的名称,但在您的示例中,您已经这样做了。在您的操作中,它可能是这样的:

setName({commit}, object) {
        console.log(object.namespace); // submitted namespace
        commit('SET_THIS_NAME', object.data); // your data
    }

请注意,这只是一种解决方法,因为仍然无法正式访问vuex模块中的命名空间。所以这不是官方方法,而是一种解决方法。

最新更新