我在 Vue.js 应用程序中使用 Pinia 进行状态管理,并且遇到了在操作中无法访问 Set 对象方法的问题。我的状态定义如下:
state: () => {
return {
user: null as User,
abilities: new Set([] as string[]),
}
},
在我的操作中,我有一个方法来检查用户是否具有特定的能力。但是,当我尝试使用 Set 对象的 has 方法时,它会抛出错误“has 不是函数”。操作方法如下:
allows(ability: string) {
if (!this.user) {
return false;
}
return this.abilities.has(ability);
},
根据我的观察,能力属性似乎被代理了,阻止了直接访问 Set 方法。在这种情况下如何访问 Set 方法?在 Pinia 中是否有处理 Set 对象的特定方法,或者我是否缺少应该如何构建我的商店?
任何见解或解决方案将不胜感激!
我通过使用 getter 而不是 action 解决了这个问题,我不完全理解如何使用状态的正确方法。