Este team redactor ha pasado mucho tiempo investigando para darle resolución a tu duda, te dejamos la respuesta por eso esperamos servirte de gran apoyo.
Solución:
Como Contexto ya no es una característica experimental y puede usar Context en su aplicación directamente y será excelente para pasar datos a componentes profundamente anidados para los que fue diseñado.
Como ha escrito Mark erikson en su blog:
Si solo está usando Redux para evitar pasar accesorios, el contexto podría reemplazar a Redux, pero probablemente no necesitaba Redux en primer lugar.
El contexto tampoco te da nada como el
Redux DevTools
la capacidad de rastrear las actualizaciones de su estado,middleware
para agregar lógica de aplicación centralizada y otras poderosas capacidades queRedux
habilita.
Redux
es mucho más potente y proporciona una gran cantidad de características que el Context Api
no proporciona, también como As @danabramov mencionado
React Redux usa el contexto internamente pero no expone este hecho en la API pública. Por lo tanto, debería sentirse mucho más seguro usando el contexto a través de React Redux que directamente porque si cambia, la carga de actualizar el código recaerá en React Redux y no en usted.
Depende de Redux actualizar realmente 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, la aplicación que usa datos centralizados y maneja la solicitud de API en creadores de acciones que usan redux-thunk
o redux-saga
todavía necesitaría redux. Aparte de este redux tiene otras bibliotecas asociadas como redux-persist
que le permiten guardar los datos de la tienda en localStorage y rehidratarlos al actualizar, que es lo que la API de contexto aún no admite.
Como mencionó @dan_abramov en su blog, es posible que no necesite Redux, ese redux tiene una aplicación útil como
- Persiste el estado en un almacenamiento local y luego arranca desde allí, listo para usar.
- Llene previamente el estado en el servidor, envíelo al cliente en HTML y arranque desde allí, listo para usar.
- Serialice las acciones de los usuarios y adjúntelas, junto con una instantánea de estado, a informes de errores automatizados, para que los desarrolladores de productos
puede reproducirlos para reproducir los errores.- Pase objetos de acción a través de la red para implementar entornos colaborativos sin cambios drásticos en la forma en que se escribe el código.
- Mantenga un historial de deshacer o implemente mutaciones optimistas sin cambios drásticos en la forma en que se escribe el código.
- Viaja entre el historial de estado en desarrollo y vuelve a evaluar el estado actual del historial de acción cuando cambia el código, a la TDD.
- Proporcione capacidades completas de inspección y control a las herramientas de desarrollo para que los desarrolladores de productos puedan crear herramientas personalizadas para sus necesidades.
aplicaciones- Proporcione interfaces de usuario alternativas mientras reutiliza la mayor parte de la lógica comercial.
Con tantas aplicaciones, es demasiado pronto para decir que Redux será reemplazado por la nueva API de contexto.
Si está utilizando Redux solo para evitar pasar accesorios a componentes profundamente anidadosentonces podría reemplazar Redux con el Context
API. Está diseñado exactamente para este caso de uso.
Por otro lado, si estás usando 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 cambió el estado de su aplicación, o usar complementos como Redux Form, Redux Saga, Redux Undo, Redux Persist, Redux Logger, etc…), entonces no hay absolutamente ninguna razón para que abandones Redux. Él 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í sola seguir usando Redux.
Algunas referencias:
- ¡Redux aún no está muerto!
- Es posible que no necesite Redux
- ¿Los ganchos de reacción reemplazan a Redux?
Prefiero usar redux con redux-thunk para hacer llamadas a la 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 de react-redux sobre cómo los componentes de 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 contexto 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 mí para cambiar).
Pero si está aprendiendo redux hoy y no lo ha usado en ninguna parte, vale la pena darle una oportunidad a Context API y reemplazar react-redux con su código de Context API personalizado. 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.
Agradecemos que desees añadir valor a nuestra información asistiendo con tu veteranía en las crónicas.