Обычно такое поведение наблюдается при попытке доступа к значению без использования observer
(или reaction
, или autorun
).Вы не упоминаете, используете ли вы React или другую библиотеку, или объясняете, как вы получаете доступ к значению.Возможно, стоит установить минимальный пример на CodeSandbox или аналогичный, который воспроизводит проблему, с которой вы сталкиваетесь.
Если бы мне пришлось размышлять, я бы сказал, что вы потребляете свои вычисленныезначение где-то в компоненте, который не заключен в observer
(в случае React). Вот пример (с удалением неиспользуемых методов), который воспроизводит проблему без дополнительной инфраструктуры:
import { autorun, computed, configure, observable } from "mobx";
class EntityStore {
@observable entityIndex = {};
@computed get renderPayload() {
const payloadArray = [];
for (let entityId in this.entityIndex) {
payloadArray.push(this.entityIndex[entityId].renderPayload);
}
return payloadArray;
}
}
configure({ computedRequiresReaction: true });
const store = new EntityStore();
// console.log('THIS WILL TRIGGER A WARNING:', store.renderPayload)
autorun(() => console.log('THIS WILL NOT TRIGGER A WARNING:', store.renderPayload))
Если вы раскомментируете журнал, вы должны увидеть предупреждение консоли.Скорее всего, вы потребляете вычисленное значение где-то, что не находится внутри observer
или подобного.Если вы уверены, что это не так, возможно, добавьте еще несколько деталей к вопросу.