У меня есть свойство @computed, которое возвращает простой объект. Как подписаться на изменения полей этого объекта?
В реальном проекте имена полей заранее не известны.
Код в песочнице
https://codesandbox.io/s/epic-noether-g8g0xconst zeroSize = {
width: 0,
height: 0
};
class Item {
@observable size = zeroSize;
}
class Collection {
@observable childrens: Item[] = [];
@computed get size() {
return this.childrens.length > 0 && this.childrens[0] ? this.childrens[0].size : zeroSize;
}
constructor() {
reaction(() => this.size, size => {
// Expected { width: 0, height: 1000 }
// Actual { width: 0, height: 0 }
console.log('-----size=', toJS(size));
});
}
}
const item1 = new Item;
const collection1 = new Collection;
collection1.childrens.push(item1);
item1.size.height = 1000;