首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从参数化getter访问getter

从参数化getter访问getter
EN

Stack Overflow用户
提问于 2022-02-06 14:24:00
回答 1查看 3.8K关注 0票数 5

tl;博士

如何从参数化getter访问其他getter?通常,您可以使用this.myGetter;但是参数化的getter被实现为箭头函数,其中this是未定义的。在皮尼亚处理这个案子的首选方法是什么?

我想在我的Pinia商店中创建一个参数化getter (multiSum),它访问另一个getter (sum)。

可以通过this访问getter,但是在用于实现参数化getter:multiSum的箭头函数中,这是行不通的,因为this是嵌套箭头函数上下文中的undefined

代码语言:javascript
复制
getters: {
  sum: (state) => state.a + state.b,
  multiSum: (state) => (count) => this.sum * count // crash: this is undefined
}

在Vuex中,参数化的getter可以通过参数访问其他getter,而不是this,后者也适用于箭头函数。但是afaik这个API并不存在于皮尼亚。

我可以通过捕获商店实例来解决这个问题:

代码语言:javascript
复制
multiSum(state) {
  const store = this
  return (count) => store.sum * count
}

这是可行的,但相当冗长。是否有更好(更符合框架的)方法来做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-06 17:16:20

this可以是箭头函数中的undefined,因为它不能与常规函数互换,并且可以从父作用域获取上下文。

thisstate的用法在文献资料中作了详细的说明。可以使用thisstate,但是this有更好的类型记录,从而支持IDE。

在第一个片段中,state在函数范围内已经可用,不需要访问this

代码语言:javascript
复制
multiSum: (state) => (count) => state.sum * count

在第二个片段中,不需要const store = this,因为商店已经是this了。

代码语言:javascript
复制
multiSum() {
  return (count) => this.sum * count
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71008104

复制
相关文章

相似问题

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