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

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

Похожие вопросы