为什么onBecomeObserved无法从[object Object]

时间:2019-07-17 09:52:52

标签: mobx

下面的代码将引发以下错误:

  

[mobx]无法从[对象对象]获取原子

我尝试使用未定义的内容初始化数据,但出现相同的错误。

我将其解释为data属性上没有可用的原子。但是由于该属性是使用observable创建的,所以我看不出为什么。

import {
  observable,
  IObservableValue,
  onBecomeObserved,
  onBecomeUnobserved
} from "mobx";

export class ObservableThing<T extends object> {
  public data: IObservableValue<T | undefined>;
  public isLoading: IObservableValue<boolean>;

  constructor() {
    this.data = observable.box();
    this.isLoading = observable.box(false);

    onBecomeObserved(this, "data", this.resumeUpdates);
    onBecomeUnobserved(this, "data", this.suspendUpdates);
  }

  private resumeUpdates() {
    console.log(`Resume updates`);
  }

  private suspendUpdates() {
    console.log(`Suspend updates`);
  }
}

const thing = new ObservableThing();

console.log(thing.data)

---编辑---

我已经通过使用@observable装饰器解决了它。

 @observable private data: IObservableValue<T>;
 @observable private isLoading: IObservableValue<boolean>;

我仍然想知道为什么没有它们就无法工作,因为我不确定使用装饰器时类的行为如何改变。

0 个答案:

没有答案