我有一个Vuex getter,我从我的应用程序中的各个组件调用它。然而,我发现在调用getter之前,需要稍微复杂一些的逻辑,所以我使用的是Vuex Action。如何使用我的操作中的参数调用getter函数?
我使用常量来命名getter /突变/操作,因此我的getter定义如下:[GETTER_NAME]: state => param => { return {/.../} }。在我的Vuex操作中,我想调用getter如下所示getters[GETTER_NAME](someParam)。但是,这似乎不起作用(即使getters[GETTER_NAME]返回一个函数)。
调用组件中的getter非常好。我只需创建computed函数并使用...mapGetters({getterName: GETTER_NAME})。要用参数调用getter,我只需说getterName(someParam)。
[GETTER_NAME]: state => param=> {
return {/.../}
},
[ACTION_NAME]: (context, param) => {
getters[GETTER_NAME](param)
? context.commit(MUTATION_X, param)
: context.commit(MUTATION_Y, param);
}但是,getter将被调用,但它返回函数而不传递参数。我是不是做错了什么,还是误解了Vuex的工作方式?
发布于 2019-01-17 07:55:38
您需要在这里调用context.getters[GETTER_NAME](someParam) to actions。
[GETTER_NAME]: state => param=> {
return {/.../}
},
[ACTION_NAME]: (context, param) => {
context.getters[GETTER_NAME](param)
? context.commit(MUTATION_X, param)
: context.commit(MUTATION_Y, param);
}
发布于 2020-08-28 19:01:12
在动作中注入了参数:dispatch、commit、getters和rootState。因此,您可以像这样访问getter:
ACTION_NAME: ({ commit, getters }, payload) => {
let MY_VARIABLE = getters.GETTER_NAME(payload)
console.log(MY_VARIABLE)
}即使您尝试从不同的模块访问getter,这也很好。尽管您可以通过context.getters使用带有上下文的getter,但是这样使用时,语法在操作中会变得有点长。
https://stackoverflow.com/questions/54231197
复制相似问题