2017-09-20 1 views
0

Ich beschäftige mich derzeit mit einer sehr großen Datentabelle. Einige Aktionen, die der Benutzer ausführen kann, sind ziemlich komplex - komplex genug, dass ich 100 tatsächliche Aktionen zu Redux führen könnte, von denen viele davon abhängen, dass der Zustand durch vorherige Aktionen aktualisiert wird und hundert Zustandsänderungen verursacht werden wird dazu führen, dass die Seite scheinbar blockiert wird, da zahlreiche Dinge in einer sehr großen Tabelle einhundert Mal gerendert werden, obwohl keine dieser Aktualisierungen für den Benutzer individuell aussagekräftig ist (oder aktiv verwirrend ist)Wie kann ich Redux mitteilen, den Status "React" noch nicht zu aktualisieren?

Gibt es einen Weg dazu Verzögerung Redux/React vom Sehen dieser Änderungen - um zu sagen "okay, ärgere dich nicht lästig Reagiere über dieses Zeug, berechne keine Requisiten, tu nicht irgendetwas aber wirf dieses Zeug durch die Reduktionen, bis es fertig ist und ich sagen Sie, es ist getan, und dann zu normalem Verhalten zurückzukehren "?

Ich weiß, ich könnte einige React state -Eigenschaft und dann eine shouldUpdateComponent in jeder meiner vielen Komponenten, aber ich hatte gehofft, es gab eine Lösung, die weniger doppelten Code verstreut über Dutzende von Dateien und vielleicht sogar ein bisschen mehr Effizienz zu vermeiden, die gleiche genaue Funktion Dutzende Male pro Update zu nennen.

Irgendwelche Vorschläge?

+1

https://stackoverflow.com/questions/41646353/reac-redux-how-to-render-not-after-each-dispatch- but-after-several? – Ryan

+1

Ähnliche Frage, aber ohne die wichtigen "Aktionen ausgelöst werden abhängig vom aktuellen Zustand" Bit - keine der Antworten der ausgewählten Antwort sind in dieser Situation nützlich. markerikson hat allerdings viele Links gepostet und vielleicht kann einer davon helfen, also danke für den Link! – GlyphGryph

Antwort

2

Dan Abramov selbst schrieb auf Twitter ein Beispiel, wie man dies mit Batch-Aktionen und einem Reducer höherer Ordnung tun kann.

https://twitter.com/dan_abramov/status/656074974533459968?lang=en

Der Kern der Idee ist es, die Aktionen wickeln Sie in einer anderen Aktion zu Charge mögen, und definiert einen höheren Ordnung Minderer (ein Reduktionsmittel, das einen anderen Minderer zurückzugibt, z. B. redux-undo), die gelten all diese Aktionen, wenn es das Batched-Action-Update behandelt.

+0

Funktioniert das, wenn die gesendeten Aktionen von den Ergebnissen vorheriger Aktionen abhängig sind? Vielleicht ist das in dem Teil "definiere einen Reducer höherer Ordnung" enthalten ... bedeutet das, dass du im Wesentlichen ein ... zurückbringst, ich weiß nicht, ein "Spiegel" des Staates und das Aktualisieren/Lesen von dem statt des realen Ladens? – GlyphGryph

+0

Auch der Link in seinem Tweet funktioniert nicht wirklich, so dass ich das Beispiel nicht wirklich sehen kann. Weißt du, wo es eigentlich ist? – GlyphGryph

Verwandte Themen