Sollten Sie jemals this.setState () verwenden, wenn Sie Redux verwenden?

111

Sollten Sie jemals verwenden, this.setState()wenn Sie Redux verwenden? Oder sollten Sie immer Aktionen auslösen und sich auf Requisiten verlassen?

Martol1ni
quelle
1
Es ist nichts Falsches daran, einige Komponenten mit Status zu haben.
Zerkms
3
Das hängt ganz davon ab, wo der Staat benutzt wird. Stellen Sie sich Redux-Stores als global vor. Alles, was nicht global sein muss, kann für eine Komponente und ihre untergeordneten Elemente privat bleiben.
Azium

Antworten:

139

Eine setStateeindeutige Verwendung von wäre für UI-Komponenten, die einen lokalen Anzeigestatus haben, aber für die globale Anwendung nicht relevant sind. Beispielsweise muss sich ein Boolescher Wert, der angibt, ob ein bestimmtes Dropdown-Menü aktiv angezeigt wird, nicht im globalen Status befinden, sodass er bequemer über den Status der Menükomponente gesteuert werden kann.

Andere Beispiele könnten den Reduzierungs- / Erweiterungszustand von Linien in einer Akkordeonanzeige einer Hierarchie umfassen. Oder möglicherweise die aktuell ausgewählte Registerkarte in der Registerkartennavigation. In beiden Beispielen können Sie sich jedoch weiterhin dafür entscheiden, den UI-Status global zu behandeln. Dies wäre beispielsweise erforderlich, wenn Sie den Erweiterungs- / Reduzierungsstatus im Browserspeicher beibehalten möchten, damit er durch Seitenaktualisierung erhalten bleibt.

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

mjhm
quelle
23
Um dies zu verfolgen, betont der relevante Redux FAQ-Eintrag, dass die Verwendung von setStatevöllig in Ordnung ist : redux.js.org/docs/faq/…
markerikson
2
Wenn Sie serverseitiges Rendering übergeben oder verwenden
möchten,
Der FAQ-Link zu Redux wurde auf redux.js.org/faq/organizing-state
AnandShanbhag