MobX。 @observable作品,但@computed不

问题描述 投票:0回答:1

我有以下代码:如果_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;
    }
}

我想我可能会错过“计算”如何工作的核心概念,但我不知道该如何更改代码...

reactjs mobx mobx-react
1个回答
0
投票

这是因为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;
    }
}
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.