Vue.js 命名空间模块中变异类型的定义

Vue.js 命名空间模块中变异类型的定义,vue.js,vuejs2,vuex,Vue.js,Vuejs2,Vuex,我有一个名称空间的Vuex模块。如果我犯下如下突变: this.$store.commit('myModuleName/' + mutationTypes.SOME_MUTATION_TYPE) this.$store.commit(mutationTypes.SOME_MUTATION_TYPE) 它运行良好。但是,我导入了多个mutation types.js文件 为了获得定义良好的模块的突变名称,为了避免总是提到模块名称,我在mutation types.js中提出了以下解决方案: l

我有一个名称空间的Vuex模块。如果我犯下如下突变:

this.$store.commit('myModuleName/' + mutationTypes.SOME_MUTATION_TYPE)
this.$store.commit(mutationTypes.SOME_MUTATION_TYPE)
它运行良好。但是,我导入了多个
mutation types.js
文件 为了获得定义良好的模块的突变名称,为了避免总是提到模块名称,我在
mutation types.js
中提出了以下解决方案:

let prefix = 'myModuleName'
export const SOME_MUTATION_TYPE= prefix + 'SOME_MUTATION_TYPE'
//or as follows, the same result:
export const SOME_MUTATION_TYPE= 'myModuleName/SOME_MUTATION_TYPE'
如果我犯下同样的突变,如下所示:

this.$store.commit('myModuleName/' + mutationTypes.SOME_MUTATION_TYPE)
this.$store.commit(mutationTypes.SOME_MUTATION_TYPE)
未提交变异,出现以下错误:

[vuex] unknown mutation type: myModuleName/SOME_MUTATION_TYPE
在这两种情况下,我提交的内容实际上是相同的,但是,在后一种情况下,我会得到该错误


为什么呢?这是我们能解决的问题吗?或者什么是更好的/常用的方法来实现它?

什么是
mutationTypes。在您的第一个示例中,一些\u MUTATION\u TYPE
返回?它是否返回字符串
SOME\u MUTATION\u TYPE
?传递到
this.$store.commit(…)
中的变量只是一个字符串,因此只需将变量记录在某个位置,并检查它们在第一个和第二个场景中是否不同。执行此操作后,它们都是字符串。甚至尝试了
this.$store.commit(“”+mutationTypes.SOME\u MUTATION\u TYPE)
它们都是字符串,但它们的值相同吗?也许你更容易创建一个MCVE,因为我们很难看到你做错了什么。