2017-07-26 1 views
0

Wie kann ich entscheiden, ob eine Komponente eine eigene Reducer-Funktion haben oder an eine Vorgängerkomponente delegieren soll?Wie kann ich entscheiden, ob eine Komponente eine eigene Reducer-Funktion haben soll?

Zum Beispiel:

Ich habe eine HomePage Komponente mit einer Druckminderer-Funktion, die mit dem Speicher registriert ist, wenn die Seite über den Router besucht wird.

Die Komponente HomePage enthält eine Instanz einer Komponente Grid.

<div> 
    <Grid contents={contents} /> 
</div> 

Die Grid Komponente muss die Anzahl Spalten verwendet es neu zu berechnen, wenn das Ansichtsfenster geändert wird, so dass ich hinzufügen, eine Aktion mit dem Namen UPDATE_COLUMN_COUNTGrid verbunden. im onComponentDidMount von Grid

Ein Aufruf dieser Aktion zum Versand an die Ereignis windowresize gebunden.

Für Grid, wo sollte ich seinen Reduzierer mit dem Speicher registrieren?

Sollte ich es manuell im Router registrieren (zusammen mit der bestehenden Registrierung der HomePage Reducer)?

Sollte ich irgendwie den Reduzierer für HomePage mit dem Reduzierer für Grid kombinieren?

Oder sollte ich auf die Aktion in der HomePage Reducer reagieren und keinen Reducer für diese Komponente haben?

Antwort

1

Persönlich würde ich den lokalen Komponentenstatus dafür verwenden, anstatt in meinem Redux-Speicher zu speichern. Dies ist ein reines Anzeigeproblem, das sich nicht auf andere Komponenten auswirkt, so dass ich meinen Code nicht zu kompliziert machen möchte.

Wenn diese Anzahl von Spalten in der Anwendung von verschiedenen Komponenten verwendet werden könnte, möchten Sie sie möglicherweise in den Redux-Status versetzen.

Im Allgemeinen sollte der Anwendungsstatus lose mit den von Ihnen verwendeten Komponenten gekoppelt sein, d. H. Sie versuchen nicht, Komponenten zu Reduzierern zuzuordnen. Stattdessen erstellen Sie den relevanten Anwendungsstatus, indem Sie Ihre Reduzierungen erstellen und die relevanten Teile für jede Komponente auswählen.

Verwandte Themen