He estado aprendiendo Redux y una parte que no me queda clara es, ¿cómo tomo una determinación entre usar el estado de reacción frente a la tienda redux y luego enviar acciones? según mi lectura hasta ahora, parece que podría usar el estado React en lugar de la tienda Redux y aún así hacer las cosas. Entiendo la separación de preocupaciones con el uso de la tienda Redux y solo tener 1 componente de contenedor y el resto como componente sin estado, pero no me queda muy claro cómo determino cuándo usar React state Vs redux store. ¿Puede ayudarme alguien, por favor?
¡Gracias!
Si no es necesario compartir el estado con otros componentes, o si no es necesario mantener el estado cuando se desmonta el componente, puede ponerlo en el estado del componente.
Puede pensar que la tienda Redux es la base de datos del front-end, si tiene algo así como datos de productos obtenidos de una API, entonces la tienda Redux es el lugar correcto; si tiene un componente desplegable, que toma una prop isOpen , entonces el padre de ese menú desplegable puede mantener dropdownIsOpen como un estado de componente.
Para obtener más información, aquí está la respuesta de Dan: https://github.com/reactjs/redux/issues/1287
también dijiste
solo 1 componente contenedor y el resto como componente sin estado
Esto es incorrecto. Puede tener varios componentes de contenedor. Un componente de contenedor también puede contener otro componente de contenedor.
Del libro:
En primer lugar, siempre debemos tener en cuenta que solo se debe poner en el estado la cantidad mínima de datos necesarios. Por ejemplo, si tenemos que cambiar una etiqueta cuando se hace clic en un botón, no debemos almacenar el texto de la etiqueta, sino que solo debemos guardar una bandera booleana que nos diga si se ha hecho clic en el botón o no. En segundo lugar, debemos agregar al estado solo los valores que queremos actualizar cuando ocurre un evento, y para los cuales queremos que el componente se vuelva a renderizar. Otra forma de averiguar si el estado es el lugar adecuado para almacenar información es verificar si los datos que estamos conservando son necesarios fuera del componente en sí o por sus elementos secundarios. Si varios componentes necesitan realizar un seguimiento de la misma información, deberíamos considerar usar un administrador de estado como Redux a nivel de aplicación.
Estás absolutamente en lo correcto. Redux (y la arquitectura de flujo en general) son solo herramientas de formalismo para ayudar a crear aplicaciones grandes. No son necesarios en absoluto.
De hecho, hay una publicación interesante llamada Puede que no necesites redux de Dan Abramov, el creador de redux, que podría darte una mejor respuesta que yo: https://medium.com/@dan_abramov/you-might-not-need-redux -be46360cf367#.7093fm1z8