从Vuex动作将参数传递给Vuex吸气剂

Ano*_*elo 4 javascript vue.js vuex

我有一个Vuex getter,可以从应用程序的各个组件中调用。但是,我发现一个案例在调用getter之前需要稍微复杂一点的逻辑,所以我使用了Vuex Action。如何从操作中使用参数调用getter函数?

我使用常量来命名getter / mutations / actions,因此我的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);
}
Run Code Online (Sandbox Code Playgroud)

调用getter,但是,它返回函数而不传递参数。我做错了什么还是我误解了Vuex中吸气剂的工作方式?

Saj*_*han 6

您需要像context.getters[GETTER_NAME](someParam)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);
}
Run Code Online (Sandbox Code Playgroud)