我有以下代码:如果_isFavorite
变量为public observable
,则效果很好。但是一旦将其更改为@computed
,它只会触发一次。但进一步的@action
调用不会触发@computed
。
一旦更改isFarovite
,此方法就很好:
class Cat {
@observable public isFavorite = false;
constructor() { ... }
@action public toggleFavorite() {
this.isFavorite = !this.isFavorite;
}
}
如果更改_isFavorite
,则无法使用:
class Cat {
private _isFavorite = false;
constructor() { ... }
@computed public get isFavorite() {
return this._isFavorite;
}
@action public toggleFavorite() {
this._isFavorite = !this._isFavorite;
}
}
我想我可能会错过“计算”如何工作的核心概念,但我不知道该如何更改代码...
这是因为computed
值应应用于某些observables
。
它实际上检查在其中使用了哪个observables
,并将其自身注册为它的观察者&caches结果。
class Cat {
@observable private _isFavorite = false;
constructor() { ... }
@computed public get isFavorite() {
return this._isFavorite;
}
@action public toggleFavorite() {
this._isFavorite = !this._isFavorite;
}
}