MobX. @ наблюдаемый работает, но @ компьютерный нет - PullRequest
0 голосов
/ 28 января 2020

У меня есть следующий код: Он отлично работает, если _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;
    }
}

Я думаю, что я мог бы упустить основную концепцию того, как «вычисляются», но я не могу понять, как я должен изменить свой код ...

1 Ответ

1 голос
/ 29 января 2020

Это потому, что значение computed должно быть применено к некоторым observables.

. Оно фактически проверяет, какие observables используются внутри него, и регистрируется как наблюдатель этого и кэшей. результат.

class Cat {
    @observable private _isFavorite = false;

    constructor() { ... }

    @computed public get isFavorite() {
        return this._isFavorite;
    }

    @action public toggleFavorite() {
        this._isFavorite = !this._isFavorite;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...