Die Hauptsache, die mich gefangen ist, dass, während Sie das state
Objekt aus dem Reduktions zurückzukehren, es gibt nichts in redux ist man einfach zu erzwingen den vorherigen Zustand mutiert, aus Versehen oder aus anderen Gründen.
Ich war eine Kopie des aktualisierten Zustand mit Object.assign({}, state, {key: 'new value'})
Rückkehr, aber wenn Ihr Zustand ist nicht flach, dh
state => {foo: {bar: {baz: 'some value'}}}
den verschachtelten Objekten wird kopiert statt verwiesen werden, da Object.assign()
nicht eine tief kopieren, und es wird sehr einfach, den veralteten Zustand beizubehalten oder versehentlich verschachtelte Eigenschaften durch Überschreiben höherer Werte zu nupfen.
Immutable.js und andere Bibliotheken werden Ihnen mit Dienstprogrammen helfen, dieses Problem zu lösen. Oder Sie können einfach den Zustand flach halten, wie es die redux docs empfehlen. Sie können jede verschachtelte Eigenschaft einzeln kopieren, was jedoch dem Reducer eine Menge an Cruft hinzufügt.
Es war die individuellen Stücke des Staates "Sie erwähnen, was ich war Ich sollte klarer sein, Entschuldigung! Ich denke, um meine eigene Frage zu beantworten Ich suchte nach dem folgenden ... Vermeiden Array-Mutationen mit c oncat(), slice() und ... verbreiten und vermeide Objektmutationen mit ... spread. Ich nehme an, ich sollte weitere Untersuchungen in jedem von diesen durchführen, da ich lieber so wenige externe Bibliotheken wie möglich verwenden würde. Würde aber gerne Meinungen dazu bekommen! –
@Thomas_Hoadley Ah, also beziehen Sie sich auf Methoden, die in Reducer-Funktionen verwendet werden, um den Status unveränderlich wiederherzustellen? Ihr Kommentar hat mehr oder weniger tatsächlich beantwortet (d. H. Concat(), slice(), ... spread). Ein weiterer Aspekt ist Object.assign(). Meine persönliche Vorliebe ist der Spread-Operator, da ich Babel benutze und ich finde es am saubersten und klarsten. Wie oben erwähnt, wird Immutable.js nicht wirklich für Redux benötigt, ich benutze es hauptsächlich b/c Ich habe große tief verschachtelte Objekte im Zustand & es ist viel schneller zu vergleichen, wenn sie unveränderbare Strukturen in 'shouldComponentUpdate()' sind. –
Okay, vielen Dank für die Hilfe! Ich werde versuchen, bei den grundlegenden Methoden zu bleiben und nur bei Bedarf auf immutable.js zurückzugreifen! Danke für Ihre Hilfe! –