Pinia Store 的问题:由于代理而无法在操作中访问设置对象方法

问题描述 投票:0回答:1

我在 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 对象的特定方法,或者我是否缺少应该如何构建我的商店?

任何见解或解决方案将不胜感激!

vue.js vuejs3 pinia
1个回答
0
投票

我通过使用 getter 而不是 action 解决了这个问题,我不完全理解如何使用状态的正确方法。

© www.soinside.com 2019 - 2024. All rights reserved.