首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MobX:操作注释方法未定义

MobX:操作注释方法未定义
EN

Stack Overflow用户
提问于 2018-10-26 15:28:31
回答 2查看 623关注 0票数 1

对于MobX注释,我遇到了一个奇怪的问题,在结果对象上不存在带注释的@action方法。

如果我的类源代码是以下TypeScript (作为最小示例):

代码语言:javascript
复制
export class Car {
    @observable
    public wheels: number = 4;

    @action
    public selfDestruct() {
        this.wheels = 0;
    }
}

我引用该方法如下:

代码语言:javascript
复制
const car = new Car();
car.selfDestruct();

我收到一个错误:

代码语言:javascript
复制
Uncaught TypeError: car.selfDestruct is not a function

在控制台中计算car.selfDestruct()返回undefined

然而,如果我使用动作函数,似乎一切都很好:

代码语言:javascript
复制
export class Car {
    @observable
    public wheels: number = 4;

    public selfDestruct = action(
        () => this.wheels = 0
    );
}

const car = new Car();

car.selfDestruct(); // works fine

作为参考,我使用的是MobX 5.5.2和TypeScript 3.1.1。编译正在由ParcelJS 1.10.1处理。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-08 21:39:29

原因是我们的tsconfig设置-我们有一个根配置和几个子配置,这似乎是编译器选项之间的相互作用,在某种程度上破坏了输出。

有关该问题的详细信息,见“MobX GitHub problem 这里”中的文档。我们的解决方法是只对整个项目使用一个统一的tsconfig。

票数 0
EN

Stack Overflow用户

发布于 2018-10-28 03:06:56

public函数声明中删除selfDestruct是否修复了它?我从未在我的操作中使用过public,所以我不确定这将如何影响@action装饰器的使用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53011943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档