2016-05-08 9 views
6

Ich benutze React + Redux, und nach dem Lesen über react-router-redux und redux-router, und nach dem Lesen Dan Abramov's answer, entschied ich mich, "Vanille" React-Router zu verwenden (ich interessiere mich nicht für Zeitreisen etc. an dieser Stelle).React + Redux + Router - Soll ich einen Zustand/Speicher für alle Seiten/Komponenten verwenden?

Die einzige offene Frage ist, wie mit dem Status über verschiedene Routen umzugehen ist. Jeder Routen-Unterbaum kann ein anderer und unabhängiger Bereich in meiner Anwendung sein (besonders wenn er größer wird). Ist es immer noch eine gute Praxis, einen Laden für alle Routen/Seiten zu haben? Sollte ich nicht (zumindest) für jeden Hauptroutenpfad einen anderen Store/Status haben?

Ich denke, Routen sollten eine Art von Staatenlosen und unabhängig sein, was bedeutet, dass, wenn ich direkt zu einem meiner Links gehe, es funktionieren sollte und andere Geschwisterrouten nicht kennen. Soll ich es in meinem Laden widerspiegeln?

bearbeiten

Nach etwas mehr denken, ich denke, dass verschiedene Reduzierungen + "CombineReducers" den Trick tun verwenden. Das einzige, was noch zu mir, um zu überprüfen ist, dass Zustand der früheren Route besteht nicht, während

Antwort

2

Auf den möglichen Lösungen navigieren diesen Zustand der ehemaligen Routen überprüfen nicht besteht nicht:

Top-Level-Komponenten in jeder Strecke Wenn Benutzer zwischen den Seiten navigieren, wird Sie können ihre Lebenszyklusmethoden verwenden, um Redux-Ereignisse zu senden, um Ihren Status zu bereinigen.

Zum Beispiel senden Sie CLEAN_STATE von. Sie sollten dieses Ereignis in Ihrem obersten Reduzierer-Ende-Anfangsstatus abfangen. Um dies zu tun, können Sie alle verschachtelten Reduzierungen mit undefined manuell als Zustandsparameter aufrufen. In diesem Fall wird jeder Reduzierer seinen Anfangszustand zurückgeben.

+1

Ok. Ist das nicht eine Art Hackie-Lösung? Ich frage mich, ob es dafür eine sauberere Lösung gibt ... –

+1

Hallo, noch ein Tipp. Sehen Sie sich das Code-Splitting im Webpack an. Ein tolles Kit, das das tut, was du beschreibst, ist Redux Starter Kit. Vielleicht lohnt es sich, es zu untersuchen, nur um eine Idee von einem möglichen Weg zu bekommen, es zu tun – Deep

+0

@Deep Danke, ich habe davon gehört, werde einen Blick darauf werfen! –

Verwandte Themen