Czy powinieneś kiedykolwiek używać this.setState () podczas korzystania z redux?

111

Czy należy kiedykolwiek używać this.setState()reduxu? A może zawsze powinieneś wykonywać akcje i polegać na rekwizytach?

Martol1ni
źródło
1
Nie ma nic złego w posiadaniu niektórych komponentów ze stanem.
zerkms
3
Zależy to całkowicie od tego, gdzie państwo jest używane. Pomyśl o sklepach Redux jako o globalnym zasięgu. Wszystko, co nie musi być globalne, może pozostać prywatne dla składnika i jego elementów podrzędnych.
azium

Odpowiedzi:

139

Jasne zastosowania setState będzie dotyczyło składników interfejsu użytkownika, które mają lokalny stan wyświetlania, ale nie są istotne dla aplikacji globalnej. Na przykład wartość logiczna, która określa, czy określone menu rozwijane jest aktywnie wyświetlane, nie musi być w stanie globalnym, więc wygodniej jest nią sterować stan elementu menu.

Inne przykłady mogą obejmować stan zwinięcia / rozwinięcia linii w hierarchii wyświetlania harmonijkowego. Lub ewentualnie aktualnie wybrana karta w nawigacji po kartach. Jednak w obu tych przykładach nadal możesz wybrać obsługę stanu interfejsu użytkownika globalnie. Na przykład byłoby to konieczne, gdybyś chciał zachować stan rozwinięcia / zwinięcia w pamięci przeglądarki, tak aby został zachowany przez odświeżenie strony.

W praktyce zazwyczaj najłatwiej jest zaimplementować takie elementy UI ze stanem lokalnym i refaktoryzować je do stanu globalnego w razie potrzeby.

mjhm
źródło
23
Aby nawiązać z tym, odpowiedni wpis Redux FAQ podkreśla, że użycie setStatejest całkowicie w porządku : redux.js.org/docs/faq/ ...
markerikson
2
Jeśli zamierzasz przekazać lub użyć renderowania po stronie serwera, myślę, że zawsze powinieneś używać Redux
neaumusic
Link Redux FAQ został zaktualizowany do redux.js.org/faq/organizing-state
AnandShanbhag