在下面的文章中,它说应该处理 mobx 的反应: https ://mobxjs.github.io/mobx/best/pitfalls.html
用 @computed 装饰器标记的属性是一种反应,因此似乎也需要处置它们。问题在于,与显式调用 autorun()、observe() 或其他返回 disposer 函数的反应不同,@computed 装饰器似乎无法让我们处理该反应。
所以问题是——应该如何处理由@computed 装饰器定义的反应?
未处理的问题可能会在以下示例中表现出来
export class Observed {
@observable
public x: number;
}
export class Observer {
constructor(private member: Observed){
}
@computed
get doubled(){
return this.member.x*2;
}
}
let member = new Observed();
let observer = new Observer(member);
// now pass observer as a model to some react component and use its doubled property
只要“成员”还活着,观察者就会一直活着,除非包装 doubled() 的反应会被释放。即使我们向 Observer 添加一个 dispose() 函数并自己调用它,我也不明白我们如何访问 doubled() 的底层反应来处理它。