2017-12-11 13 views
1

ich ein mobx beobachtbaren Objekt haben:Mobx beobachtbare Objekt Updates reagieren

@observable friend = {name: 'bert'}

Und ich habe eine mobx Aktion, die das Objekt aktualisiert:

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

Aber mein friend Objekt doesn nicht aktualisieren.

Ich habe in die Mobx-Dokumente untersucht und es scheint map kann die richtige Sache zu verwenden sein, weil es neue Elemente in einem Objekt platziert berücksichtigt. Dies scheint jedoch mehr auf Arrays zugeschnitten zu sein. extendObservable scheint eher auf Klassen zugeschnitten zu sein.

Was ist eine gute Übung zum Hinzufügen zu einem beobachtbaren Mobx-Objekt?

+0

Wenn Sie alle Schlüssel im Voraus kennen, können Sie ein Objekt mit 'null' Werten verwenden, und es wird funktionieren:' Observable friend = {Name: 'bert', Alter: null}; '. Wenn die Schlüssel vollständig dynamisch sein können, müssen Sie eine Karte verwenden. – Tholle

Antwort

2

Karte ist die richtige Methode zum Ändern von Schlüsseln für ein Objekt, da die Karte keyed array erstellt.

Karte funktioniert wie die ES6-Karte, in der es eine iterable dauern kann.

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

An jedem Punkt jetzt Freund kann mit Satz geändert werden.

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

Alles, was der Freund beobachtbaren verwendet, wird um Änderungen in den Werten auf vorhandenen Schlüssel und der das Hinzufügen oder Entfernen von neuen Schlüsseln reagieren.

Verwandte Themen