2016-08-09 50 views
6

Ich benutze ReactJs mit Redux und auf einigen Tutorials und Codes sehe ich Menschen vorschlagen und mit normalizr halten Sie den Zustand flach. Aber was ist der wirkliche Vorteil darin, es flach zu halten? Werde ich irgendwelche Probleme haben, wenn ich nicht? Ist es nötig ?Warum sollte ich den Staat flach halten

Antwort

6

Drei Hauptgründe:

  • Updating verschachtelt Javascript in hässlichem Code unwandelbar im allgemeinen zu Objekten, die schwieriger zu pflegen ist, es sei denn, Sie eine Dienstprogramm-Bibliothek verwenden den Prozess
  • unwandelbar verschachtelte Daten erfordern die Aktualisierung einpacken, dass Sie geben neue Kopien aller Elemente in der Verschachtelungshierarchie zurück. Da Komponenten im Allgemeinen Vergleichsvergleiche mit oberflächennaher Gleichheit an Daten durchführen, um zu sehen, ob sie aktualisiert werden müssen, bedeutet das Aktualisieren von verschachtelten Daten normalerweise, dass mehr Objekte aktualisiert werden und mehr Komponenten wahrscheinlich erneut gerendert werden müssen, selbst wenn sich die tatsächlichen Daten nicht unterscheiden.
  • Flache Daten, und insbesondere normalisierte Daten, ermöglichen einige optimiertere Ansätze zum Definieren von Komponenten (z. B. eine Liste, in der jede Listenelementkomponente selbst verbunden ist, eine Element-ID als Stütze besitzt und selbst nachschlagen muss Daten des Artikels mit dieser ID)
+1

vielen dank für die tolle antwort. es hat mich total überzeugt und mir geholfen es besser zu verstehen :) –

6

Ich nehme an, dass, indem Sie es flach halten, Sie meinen, in Ihrem Zustandsobjekt nicht verschachtelt zu sein.
Es ist nicht ratsam, in Ihren Status zu verschachteln, da Sie Ihren Status entsprechend einigen Ereignissen ändern müssen.
Wenn Sie sich Redux-Dokumentation ansehen, wollen sie, dass Sie reine Reducer haben. Und ein Teil davon, Ihre Funktion rein zu machen, ändert ihre Argumente nicht.
Wenn Sie viel verschachtelt haben, ist es schwierig, den Status zu ändern, ohne das Statusobjekt versehentlich zu ändern, da alle JS-Objekte als Referenz übergeben werden. Wenn Sie viel verschachtelt haben, müssen Sie tiefe Kopien des Zustandsobjekts erstellen, bevor Sie es modifizieren.

+0

Vielen Dank! jetzt kann ich mir nicht vorstellen, meine Bundesstaaten nicht zu verflachen :) –