Объект Mobx Observable реагирует на обновления

У меня есть наблюдаемый объект mobx:

@observable friend = {name: 'bert'}

И у меня есть действие mobx, которое обновляет объект:

@action addAge = () => this.friend.age = 20

Но мой объект friend не обновляется.

Я просмотрел документы mobx, и кажется, что map может быть правильным, потому что он учитывает новые элементы, помещенные в объект. Однако это, похоже, больше подходит для массивов. extendObservable кажется более приспособленным к классам.

Что является хорошей практикой для добавления к наблюдаемому объекту mobx?


person alanbuchanan    schedule 11.12.2017    source источник
comment
Если вы заранее знаете все ключи, вы можете использовать объект с null значениями, и он будет работать: observable friend = { name: 'bert', age: null };. Если ключи могут быть полностью динамическими, вам нужно использовать карту.   -  person Tholle    schedule 11.12.2017


Ответы (1)


Карта — это правильный способ изменить ключи на объекте, так как карта создает keyed array.

Карта работает как карта ES6 в том смысле, что она может принимать итерируемые объекты.

@observable friend = new Map([[ 'name', 'jack']])

В любой момент теперь друг может быть изменен с помощью set.

@action addAge = () => { this.friend.set('age', 24); }

Все, что использует наблюдаемый друг, будет реагировать на изменения значений существующих ключей и добавление или удаление новых ключей.

person Jack senior    schedule 16.01.2018