Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 莫布@可观察的工程,但@computed don';T_Reactjs_Mobx_Mobx React - Fatal编程技术网

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
相同:]