tl;博士
如何从参数化getter访问其他getter?通常,您可以使用this.myGetter;但是参数化的getter被实现为箭头函数,其中this是未定义的。在皮尼亚处理这个案子的首选方法是什么?
我想在我的Pinia商店中创建一个参数化getter (multiSum),它访问另一个getter (sum)。
可以通过this访问getter,但是在用于实现参数化getter:multiSum的箭头函数中,这是行不通的,因为this是嵌套箭头函数上下文中的undefined。
getters: {
sum: (state) => state.a + state.b,
multiSum: (state) => (count) => this.sum * count // crash: this is undefined
}在Vuex中,参数化的getter可以通过参数访问其他getter,而不是this,后者也适用于箭头函数。但是afaik这个API并不存在于皮尼亚。
我可以通过捕获商店实例来解决这个问题:
multiSum(state) {
const store = this
return (count) => store.sum * count
}这是可行的,但相当冗长。是否有更好(更符合框架的)方法来做到这一点?
发布于 2022-02-06 17:16:20
this可以是箭头函数中的undefined,因为它不能与常规函数互换,并且可以从父作用域获取上下文。
this和state的用法在文献资料中作了详细的说明。可以使用this或state,但是this有更好的类型记录,从而支持IDE。
在第一个片段中,state在函数范围内已经可用,不需要访问this。
multiSum: (state) => (count) => state.sum * count在第二个片段中,不需要const store = this,因为商店已经是this了。
multiSum() {
return (count) => this.sum * count
}https://stackoverflow.com/questions/71008104
复制相似问题