为什么MobX允许我在没有@action的情况下更改此属性?

时间:2018-04-02 13:31:11

标签: javascript mobx

为什么MobX在严格模式下允许我从构造函数调用的toggle方法更改标志?不应该告诉我" mobx处于严格模式,你应该使用一个动作"?

代码如下

import { useStrict, configure, autorun } from 'mobx';
import { observable, action, computed } from 'mobx';


configure({ enforceActions: true });


class Test {
    @observable flag = false;

    constructor() {
        this.toggle();
    }

    toggle() {
        this.flag = !this.flag;
    }
}

var t = new Test();

autorun(function test () {
    console.log("fired: " + t.flag);  //prints fired: true
});

1 个答案:

答案 0 :(得分:1)

感谢@ChrisEdgington,在调用构造之后,属性才变为observable,这也是逻辑的,因为在调用构造函数之前对象不存在。

你只是基本上初始化ScheduleDescriptionService字段两次,我会拒绝你这样做。

flag

所以只使用一种但不是两种方式。