javascript - 有没有办法在其动作或突变中获取 nameSpaced vuex 模块的名称?
问题描述
我的应用程序中有多个带有 nameSpaced: true 的 vuex 模式。在模块的动作或突变中,我想知道父模块的名称。
假设我有 2 个模块,“a”和“b”,我将突变称为
this.$store.commit("a/setName", name);
this.$store.commit("b/setName", name);
现在在 setName 函数中,我想知道调用的 nameSpace 是什么?是'a'还是'b'?
解决方案
目前这仍然是一个悬而未决的问题vuex
,您可以在此处看到:Access module namespace from inside module #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
模块内的命名空间。因此,这不是官方方式,而是一种解决方法。
推荐阅读
- asp.net - 使用 IIS 10.0 进行调试
- random - MySQL 中 rand() 的意外行为
- java - Java - 不推荐使用 JsonWriter
- python - 你应该如何存储多维数组?
- flutter - Flutter 2.0 升级,pub 因无意义的依赖行为而失败
- javascript - 材料第二个文本字段标签不移动
- c++ - -march=native 有害的原因是什么
- openlayers - 选择要素时的 OpenLayers 弹出表单
- c++ - 用于在 Linux 上管理 Internet 连接的 C/C++ 库
- testing - 在 Verilog 中运行测试的问题