Wie setzt man alle Zustände von ngrx / store zurück?

8

Ich verwende Angular 2 mit ngrx / store . Ich möchte die gesamten Store-Status zurücksetzen, wenn der Benutzer USER_LOGOUT versendet.

Ich lese die Antwort von Dan Abramov von Wie man das zurücksetzt Status eines Redux-Speichers? , aber ich habe nicht herausgefunden, wie rootReducer richtig geschrieben wird und wo es bei Verwendung von ngrx / store abgelegt wird.

Oder gibt es eine andere Möglichkeit, dies in ngrx / store zu behandeln?

%Vor%     
Hongbo Miao 05.09.2016, 02:47
quelle

4 Antworten

8

Diese Antwort ist spezifisch für ngrx Version 2. Die Frage hat eine andere, aktuellere Antwort , die erklärt, wie das Gleiche funktioniert mit ngrx Version 4 gemacht werden.

compose erstellt den ngrx Wurzelreduzierer .

Die Argumente, die an compose übergeben werden, sind Funktionen, die einen Reduzierer zurückgeben - der aus dem Reduzierer zusammengesetzt ist und selbst als Argument übergeben wird. Sie können das Zurücksetzen Ihres Geschäfts wie folgt zusammenstellen:

%Vor%

Beachten Sie, dass dadurch der gesamte Status des Geschäfts zurückgesetzt wird - einschließlich router . Wenn Sie das nicht möchten, können Sie das Beispiel optimieren.

Mit Einführung von NgModule hat sich das Bootstrapping geändert, aber Sie übergeben den kompilierten Reducer immer noch an provideStore :

%Vor%     
cartant 05.09.2016, 03:38
quelle
13

In ngrx / store 4.x kann dies mit erreicht werden Metareducers . Wie ich es verstehe, passieren alle Aktionen die Metareducer, bevor sie an die Feature Reducer übergeben werden. Dies gibt uns die Möglichkeit, den Zustand zuerst zu ändern / zurückzusetzen.

Hier ist ein Beispiel.

Dies ist meine Metareducer-Funktion: Falls die Aktion vom Typ LOGOUT ist, wird der Status neu initialisiert.

%Vor%

Im Folgenden sehen Sie, wie der Metareducer zusammen mit den Funktionsreduzierern konfiguriert wird. Sollten mehr als 1 Metareducer vorhanden sein, werden diese von rechts nach links ausgewertet.

%Vor%

Schließlich habe ich auch einen @ -Effekt, durch den ich zur Anmeldeseite navigiere

%Vor%     
David Bulté 26.07.2017 10:16
quelle
4

Mit @ ngrx / store ":" ^ 4.0.3 "ist das etwas anders, weil es kleine Änderungen gibt, also sieht mein 'klarer Zustand' so aus

%Vor%

und

%Vor%     
Limarenko Denis 20.09.2017 00:10
quelle
2

Dies ist nicht wirklich eine Antwort, aber die Kommentare lassen mich nicht richtig formatieren. Um hinzuzufügen, was Cartant gesagt hat, wenn Sie Ihre Typen wie folgt einrichten:

%Vor%

Es ist die lange Beschreibung, die Sie verwenden sollten. Auch wenn Sie Ihren Root Reducer rootReducer anstatt nur reducer nennen, würden Sie das auch ändern. Folgendes ist ein bearbeitetes Beispiel:

(Ich habe diese Funktion in meinem Wurzelreduzierer gelassen)

%Vor%     
Helzgate 18.02.2017 17:26
quelle

Tags und Links