BEARBEITEN: Endlich habe ich Mobx.js gewählt, für Details siehe @mweststrate-Antwort.
Alle Lernressourcen zu redux zeigen, wie man es mit einfachen Objektmodellen verwendet. Aber ich kann nicht herausfinden, wie man es benutzt, wenn Sie einige es6 Klassenmodelle benutzen.
Nehmen wir zum Beispiel diese Zustandsform:
%Vor%Und diese Klasse (nicht getestet)
%Vor%Stellen Sie sich vor, ich hätte eine Sammlung von 100 Spielern in WorldCollection. Was ist der beste Weg?
Dies könnte getan werden, indem dispatch
in den Konstruktor
Versende eine Aktion in jedem Setter.
%Vor%Und setze die ganze Logik in Reduzierer (die Setterlogik ist deterministisch und atomar).
%Vor%Pro:
Nachteile:
Dies könnte getan werden, indem auch dispatch
in jedem setter
verwendet wird und nach jedem Setzer eine Aktion ausgelöst wird
Wenn der neue Baumstatus geändert wird. Ich rufe mapStateToProps
und WorldCollection.getPlayer()
auf, um die richtige Instanz abzurufen und ihre Eigenschaften der Ansicht zuzuordnen.
Vorteile:
Nachteile:
Ich hoffe, ich habe den Fall nicht zu sehr vereinfacht. Mein Punkt ist zu klären, ob / wie Redux mit einigen Klassenmodellen verwendet werden könnte.
--- sehr vor-experimentell hier ---
Ich habe Mobx.js vor einer Woche entdeckt und seine Einfachheit / Perf hatte mich.
Ich denke, wir könnten alle Klassenmitglieder beobachten (die zusammen den App-Status bilden)
%Vor%und woanders haben eine Klasse, die den Zustandsbaum bildet, vielleicht könnte Redux hier Sinn machen? (Ich habe keine Ahnung, wie ich diesen Teil machen soll. Ich muss tiefer in Mobx eintauchen)
Das sind Vor- / Nachteile in einem reinen redox / mobx Vergleich für meinen Fall .
Pros:
Nachteile:
Vielleicht möchten Sie sich redux-orm ansehen, was so ziemlich schon funktioniert. Es bietet eine schöne modellartige Fassade über die tatsächlichen einfachen Objektdaten in Ihrem Redux-Zustand und verarbeitet relationale Daten sehr gut.
Ich möchte hinzufügen, dass Sie, wenn Sie Redux verwenden würden, den Status gar nicht in Klassen speichern würden . In Redux würde diese Logik in Reduzierern beschrieben, die anstelle von Klasseninstanzen auf einfachen Objekten arbeiten würden. Sie würden die Daten normalisiert halten, so dass jede Entität in einer Objektzuordnung durch ihre ID beibehalten wird, und jeder Verweis auf untergeordnete Entitäten wäre ein Array von IDs und keine echte Referenz. Sie würden dann Selektoren schreiben, um die Teile der Daten zu rekonstruieren, die Sie zum Rendern interessieren.
Sie können diese Diskussion hilfreich finden, ebenso wie diese zwei Beispiele:
(MobX-Autor). Für eine kurze Antwort auf die Fragen zu MobX:
Wiederholen / Rückgängigmachen kann auf zwei Arten implementiert werden:
Einzelner Statusbaum:
Tags und Links javascript state redux mobx