Você deve usar this.setState () ao usar redux?

111

Você deve usar this.setState()ao usar redux? Ou você deve sempre despachar ações e depender de acessórios?

Martol1ni
fonte
1
Não há nada de errado em ter alguns componentes com estado.
zerkms
3
Isso depende completamente de onde o estado está sendo usado. Pense nas lojas redux como globais. Qualquer coisa que não precise ser global pode permanecer privada para um componente e seus filhos.
azium

Respostas:

139

Os usos claros de setStateseriam para componentes de interface do usuário que têm estado de exibição local, mas não são relevantes para o aplicativo global. Por exemplo, um booleano que representa se um menu suspenso específico é exibido ativamente não precisa estar no estado global, portanto, é mais convenientemente controlado pelo estado do componente de menu.

Outros exemplos podem incluir o estado de recolhimento / expansão de linhas em uma exibição de acordeão de uma hierarquia. Ou possivelmente a guia atualmente selecionada na navegação de guias. No entanto, em ambos os exemplos, você ainda pode escolher lidar com o estado da IU globalmente. Por exemplo, isso seria necessário se você quisesse persistir o estado de expansão / recolhimento no armazenamento do navegador para que fosse preservado pela atualização da página.

Na prática, geralmente é mais fácil implementar esses elementos de interface do usuário com o estado local e refatorá-los no estado global conforme necessário.

mjhm
fonte
23
Para dar continuidade a isso, a entrada relevante do FAQ do Redux enfatiza que o uso de setStateé totalmente aceitável : redux.js.org/docs/faq/…
markerikson
2
Se você for entregar ou usar a renderização do lado do servidor, acho que sempre deve usar Redux
neaumusic
O link Redux FAQ foi atualizado para redux.js.org/faq/organizing-state
AnandShanbhag