首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Vuex动作将参数传递给Vuex getter

从Vuex动作将参数传递给Vuex getter
EN

Stack Overflow用户
提问于 2019-01-17 07:46:24
回答 2查看 4.8K关注 0票数 5

我有一个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)

代码语言:javascript
复制
[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的工作方式?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-17 07:55:38

您需要在这里调用context.getters[GETTER_NAME](someParam) to actions

代码语言:javascript
复制
[GETTER_NAME]: state => param=> {
return {/.../}
},

[ACTION_NAME]: (context, param) => {
   context.getters[GETTER_NAME](param)
     ? context.commit(MUTATION_X, param)
     : context.commit(MUTATION_Y, param);
}

票数 8
EN

Stack Overflow用户

发布于 2020-08-28 19:01:12

在动作中注入了参数:dispatchcommitgettersrootState。因此,您可以像这样访问getter:

代码语言:javascript
复制
ACTION_NAME: ({ commit, getters }, payload) => {
    let MY_VARIABLE = getters.GETTER_NAME(payload)
    console.log(MY_VARIABLE)
}

即使您尝试从不同的模块访问getter,这也很好。尽管您可以通过context.getters使用带有上下文的getter,但是这样使用时,语法在操作中会变得有点长。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54231197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档