Reactjs 莫布@可观察的工程,但@computed don';T
我有以下代码: 如果Reactjs 莫布@可观察的工程,但@computed don';T,reactjs,mobx,mobx-react,Reactjs,Mobx,Mobx React,我有以下代码: 如果\u isFavorite变量是公共可观察的,则它可以正常工作。但一旦我将其更改为@computed,它只会触发一次。但是进一步的@action调用不会触发@computed 一旦更改了isFarovite,此功能就可以正常工作: class Cat { @observable public isFavorite = false; constructor() { ... } @action public toggleFavorite() {
\u isFavorite
变量是公共可观察的
,则它可以正常工作。但一旦我将其更改为@computed
,它只会触发一次。但是进一步的@action
调用不会触发@computed
一旦更改了isFarovite
,此功能就可以正常工作:
class Cat {
@observable public isFavorite = false;
constructor() { ... }
@action public toggleFavorite() {
this.isFavorite = !this.isFavorite;
}
}
class Cat {
private _isFavorite = false;
constructor() { ... }
@computed public get isFavorite() {
return this._isFavorite;
}
@action public toggleFavorite() {
this._isFavorite = !this._isFavorite;
}
}
如果更改了\u isFavorite
,则此操作无效:
class Cat {
@observable public isFavorite = false;
constructor() { ... }
@action public toggleFavorite() {
this.isFavorite = !this.isFavorite;
}
}
class Cat {
private _isFavorite = false;
constructor() { ... }
@computed public get isFavorite() {
return this._isFavorite;
}
@action public toggleFavorite() {
this._isFavorite = !this._isFavorite;
}
}
我想我可能错过了“计算”如何工作的核心概念,但我不知道我应该如何更改代码…这是因为
计算的
值应该应用于一些可观察的对象
它实际上检查哪些可观察对象
在它内部使用,并将自己注册为它的观察者&缓存结果
类Cat{
@可观测私有_isFavorite=false;
构造函数(){…}
@计算的公共获取isFavorite(){
把这个还给我;
}
@action public toggleFavorite(){
这个。_isFavorite=!这个。_isFavorite;
}
}
谢谢!确实有效。将私有变量标记为@observable
对我来说并不明显,因为它不是直接在render()方法中使用的。它与private/public无关,而是与它在observators中使用的事实有关,正如我所解释的,computed
与组件上的observator
相同:]