Se lanzó React 16.3.0 y la API de contexto ya no es una característica experimental. Dan Abramov (el creador de Redux) escribió un buen comentario aquí sobre esto, pero pasaron 2 años cuando Context todavía era una característica experimental.
Mi pregunta es, en su opinión / experiencia, ¿cuándo debo usar React Context sobre React Redux y viceversa?
javascript
reactjs
redux
react-redux
react-context
Alfrex92
fuente
fuente
duix
paquete npm. Es solo un simple administrador de estado con devoluciones de llamada, realmente fácil de implementar. Para ser claros: soy el creador.Respuestas:
Como Context ya no es una característica experimental y puede usar Context en su aplicación directamente y será excelente para transmitir datos a componentes profundamente anidados para los que fue diseñada.
Como Mark erikson ha escrito en su blog :
Redux
es mucho más potente y proporciona una gran cantidad de funciones queContext Api
no proporciona, también como As @danAbramov mencionóDepende de Redux actualizar su implementación para cumplir con la última API de contexto
La última API de contexto se puede usar para aplicaciones en las que simplemente usaría Redux para pasar datos entre componentes, sin embargo, las aplicaciones que usan datos centralizados y manejan solicitudes de API en creadores de acciones que usan
redux-thunk
oredux-saga
aún necesitarían redux. Aparte de esto, redux tiene otras bibliotecas asociadas comoredux-persist
que le permiten guardar los datos de la tienda en localStorage y rehidratarse en la actualización, que es el contexto que la API todavía no admite.Como @dan_abramov mencionó en su blog Es posible que no necesite Redux , que redux tiene una aplicación útil como
Con todas estas aplicaciones, es demasiado pronto para decir que Redux será reemplazado por la nueva API de contexto.
fuente
Si está utilizando Redux solo para evitar pasar accesorios a componentes profundamente anidados , entonces podría reemplazar Redux con el
Context
API. Está exactamente destinado a este caso de uso.Por otro lado, si está utilizando Redux para todo lo demás (tener un contenedor de estado predecible, manejar la lógica de su aplicación fuera de sus componentes, centralizar el estado de su aplicación, usar Redux DevTools para rastrear cuándo, dónde, por qué y cómo el estado de su aplicación cambiado, o usando complementos como Redux Form , Redux Saga , Redux Undo , Redux Persist , Redux Logger , etc.), entonces no hay absolutamente ninguna razón para que abandone Redux. los
Context
API no proporciona nada de esto.Y personalmente creo que la extensión Redux DevTools es una herramienta de depuración increíble y subestimada, que justifica por sí misma seguir usando Redux.
Algunas referencias:
fuente
Prefiero usar redux con redux-thunk para hacer llamadas API (también usando Axios) y enviar la respuesta a los reductores. Es limpio y fácil de entender.
La API de contexto es muy específica para la parte react-redux sobre cómo los componentes React están conectados a la tienda. Para esto, react-redux es bueno. Pero si lo desea, dado que Context es oficialmente compatible, puede usar la API de Context en lugar de react-redux.
Entonces, la pregunta debería ser Context API vs react-redux, y no Context API vs redux. Además, la pregunta es un poco obstinada. Como estoy familiarizado con react-redux y lo uso en todos los proyectos, continuaré usándolo. (No hay ningún incentivo para que cambie).
Pero si está aprendiendo redux solo hoy, y no lo ha usado en ninguna parte, vale la pena probar Context API y reemplazar react-redux con su código personalizado de Context API. Tal vez, es mucho más limpio de esa manera.
Personalmente, es una cuestión de familiaridad. No hay una razón clara para elegir uno sobre el otro porque son equivalentes. E internamente, react-redux usa Context de todos modos.
fuente
Las únicas razones para usar Redux para mí son:
Probablemente no necesite el nivel de indirección para toda su aplicación, por lo que está bien mezclar estilos y usar estado / contexto local y Redux al mismo tiempo.
fuente
De: ¿ Cuándo usar Redux?
fuente