Typescript Vuex - 如何使用 setter 和 getter 定义状态?
Posted
技术标签:
【中文标题】Typescript Vuex - 如何使用 setter 和 getter 定义状态?【英文标题】:Typescript Vuex - How to define a state with a setter and 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";
【问题讨论】:
【参考方案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 函数已正确创建。有人知道为什么第一种方法不起作用?
【讨论】:
以上是关于Typescript Vuex - 如何使用 setter 和 getter 定义状态?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Vuex 4 和 TypeScript 中使用其他存储模块 getter/actions/mutations
如何使用 vuex 和 typescript 将 axios 调用移动到自己的方法中
Typescript Vuex - 如何使用 setter 和 getter 定义状态?
在 Vue 3 中使用 Vuex 4 模块和 TypeScript,以及如何修复循环依赖 linting 错误?