khusamov
@khusamov
ReactJS, NodeJS, TypeScript, Sencha ExtJS

Как правильно подписаться на @computed, возвращающий объект?

У меня есть свойство @computed, которое возвращает простой объект. Как подписаться на изменения полей этого объекта?

В реальном проекте имена полей заранее не известны.
Код в песочнице https://codesandbox.io/s/epic-noether-g8g0x

const 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;
  • Вопрос задан
  • 48 просмотров
Решения вопроса 1
khusamov
@khusamov Автор вопроса
ReactJS, NodeJS, TypeScript, Sencha ExtJS
Разработчики мобикс посоветовали пользоваться ТОЛЬКО autorun()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы