【问题标题】:Typescript Vuex - How to define a state with a setter and getter?Typescript Vuex - 如何使用 setter 和 getter 定义状态?
【发布时间】:2019-10-18 10:12:21
【问题描述】:

在 vuex 存储中,我想初始化一个名为 _token 的状态。当我尝试访问同一类中的属性时,它给了我一个错误消息,即 _token 的设置器未定义。任何人都知道为什么只有 getter 可用?

export default class Api extends VuexModule {
  public _token = '';

  @Action
  public async [VuexActionsApi.VerifyUser](data: any): Promise<IResponseState> {
    const vuexInstance = this;

    // this is not working
    vuexInstance._token = "test";
}

【问题讨论】:

    标签: javascript typescript vue.js vue-component vuex


    【解决方案1】:

    如果你要使用类装饰器,那么你必须像这样导入它们(并安装包):

    import Action from 'vue-class-component'
    

    虽然我可能会建议不要使用该语法,因为它在 vue3 中已被弃用,请参见此处: https://github.com/vuejs/rfcs/pull/17#issuecomment-494242121

    【讨论】:

    • 我从包“import { Action, Module, VuexModule } from 'vuex-module-decorators';”中导入了类装饰器这个包也被 vue3 弃用了吗?您建议哪种替代方案?
    • 不,没关系,它只是不会在 vue3 中得到官方支持(你应该仍然可以使用该包。
    • 所以没有官方的typescript vue支持?感谢您的帮助:)
    • 我现在已经看到 typescript 装饰器将被构建到 Vue 3.0 中。所以我上面的问题不再相关了:)
    【解决方案2】:

    当我这样定义状态时,它现在似乎可以工作了:

    public data = {
      bearerToken: undefined
    };
    

    现在 setter 和 getter 函数已正确创建。有人知道为什么第一种方法不起作用?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-29
      • 2016-02-08
      • 2021-09-03
      • 1970-01-01
      • 2020-02-20
      • 2021-06-01
      • 1970-01-01
      • 2019-02-22
      相关资源
      最近更新 更多