¿Debería usar this.setState () cuando usa redux?


111

¿Debería usar alguna vez this.setState()al usar redux? ¿O debería estar siempre enviando acciones y confiando en los accesorios?


1
No hay nada de malo en tener algunos componentes con estado.
zerkms

3
Eso depende completamente de dónde se esté utilizando el estado. Piense en las tiendas redux como globales. Todo lo que no necesita ser global puede permanecer privado para un componente y sus elementos secundarios.
azium

Respuestas:


139

Los usos claros de setStateserían para componentes de interfaz de usuario que tienen un estado de visualización local, pero que no son relevantes para la aplicación global. Por ejemplo, un valor booleano que representa si un menú desplegable específico se muestra activamente no necesita estar en estado global, por lo que es más conveniente controlarlo mediante el estado del componente del menú.

Otros ejemplos pueden incluir el estado de colapso / expansión de líneas en una visualización de acordeón de una jerarquía. O posiblemente la pestaña seleccionada actualmente en la navegación de pestañas. Sin embargo, en ambos ejemplos, aún puede optar por controlar el estado de la interfaz de usuario de forma global. Por ejemplo, esto sería necesario si desea mantener el estado de expansión / contracción en el almacenamiento del navegador para que se conserve al actualizar la página.

En la práctica, suele ser más fácil implementar dichos elementos de la interfaz de usuario con el estado local y refactorizarlos en el estado global según sea necesario.


23
Para continuar con esto, la entrada relevante de las preguntas frecuentes de Redux enfatiza que el uso de setStateestá completamente bien : redux.js.org/docs/faq/…
markerikson

2
Si va a transferir o usar la representación del lado del servidor, creo que siempre debe usar Redux
neaumusic

El enlace de preguntas frecuentes de Redux se ha actualizado a redux.js.org/faq/organizing-state
AnandShanbhag
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.