2016-01-10 6 views
76

Sollten Sie jemals this.setState() bei Verwendung von Redux verwenden? Oder sollten Sie immer Aktionen ausführen und sich auf Requisiten verlassen?Sollten Sie jemals this.setState() bei der Verwendung von Redux verwenden?

+0

Es gibt nichts falsch daran, einige Komponenten mit Zustand zu haben. – zerkms

+2

Das hängt vollständig davon ab, wo der Staat benutzt wird. Denken Sie an Redox-Läden als global. Alles, was nicht global sein muss, kann für eine Komponente und ihre untergeordneten Elemente privat bleiben. – azium

Antwort

98

Klare Verwendungen von setState wären für UI-Komponenten mit lokalem Anzeigestatus, die jedoch für die globale Anwendung nicht relevant sind. Zum Beispiel muss ein Boolescher Wert, der angibt, ob ein bestimmtes Dropdown-Menü aktiv angezeigt wird, nicht im globalen Status sein, sodass er bequemer vom Status der Menükomponente gesteuert wird.

Andere Beispiele können den Status von Linien in einer Akkordeonanzeige einer Hierarchie enthalten. Oder möglicherweise die aktuell ausgewählte Registerkarte in der Tab-Navigation. In beiden Beispielen könnten Sie jedoch trotzdem global mit dem UI-Status umgehen. Dies wäre beispielsweise erforderlich, wenn Sie den Expand/Collapse-Status im Browserspeicher beibehalten möchten, damit er bei der Seitenaktualisierung erhalten bleibt.

In der Praxis ist es normalerweise am einfachsten, solche UI-Elemente mit lokalem Status zu implementieren und sie bei Bedarf in den globalen Status umzuformen.

+16

Um darauf hinzuweisen, betont der relevante Redux-FAQ-Eintrag, dass ** die Verwendung von 'setState' völlig in Ordnung ist **: http://redux.js.org/docs/faq/OrganizingState.html#organizing-state-only -redux-state – markerikson

+0

Wenn Sie server-seitiges Rendern übergeben oder verwenden, sollten Sie immer Redux verwenden – neaumusic

Verwandte Themen