¿Cuál es la diferencia entre un reductor y un middleware en Redux?
Nov 10, 2025
¡Hola! Como proveedor de reductores, a menudo me preguntan sobre la diferencia entre un reductor y un middleware en Redux. Es una pregunta común, especialmente para aquellos nuevos en el mundo de Redux y la gestión de estado en aplicaciones React. Entonces, profundicemos y analicémoslo de una manera que sea fácil de entender.
¿Qué es un reductor?
Primero lo primero, hablemos de reductores. En Redux, un reductor es una función pura que toma el estado actual y una acción como argumentos y devuelve un nuevo estado. Suena simple, ¿verdad? Bueno, en cierto modo lo es, pero también es súper poderoso.
Supongamos que está creando una aplicación de lista de tareas pendientes. Su estado podría ser una serie de tareas pendientes, y cada acción podría ser algo como "agregar una nueva tarea pendiente", "marcar una tarea pendiente como completada" o "eliminar una tarea pendiente". El trabajo del reductor es manejar estas acciones y actualizar el estado en consecuencia.
Aquí hay un ejemplo simple de un reductor para nuestra aplicación de lista de tareas pendientes:
const estadoinicial = { todos: [] }; const todoReducer = (estado = estado inicial, acción) => { switch (acción.tipo) { case 'ADD_TODO': return { ...estado, todos: [...estado.todos, acción.payload] }; case 'DELETE_TODO': return { ...estado, todos: state.todos.filter(todo => todo.id!== action.payload) }; predeterminado: estado de retorno; } };
En este ejemplo, cuando elAGREGAR_TODOSe envía la acción, el reductor toma el estado actual, lo extiende y luego agrega la nueva tarea pendiente altodoformación. cuando elDELETE_TODOSe envía la acción, filtra la tarea pendiente con el ID especificado.


Como proveedor de reductores, ofrecemos una amplia gama de reductores de alta calidad, como elReductor de titanio Gr7y elReductor de circonio. Estos reductores están diseñados para manejar tareas complejas de gestión de estado de manera eficiente y confiable.
¿Qué es el middleware?
Ahora, pasemos al middleware. El middleware en Redux es una forma de interceptar acciones antes de que lleguen al reductor. Se puede utilizar para diversos fines, como iniciar sesión, manejar operaciones asincrónicas o agregar funcionalidad adicional a su aplicación.
Uno de los casos de uso más comunes del middleware es el manejo de acciones asincrónicas, como realizar llamadas API. En una configuración tradicional de Redux, las acciones son sincrónicas, lo que significa que ocurren de inmediato. Pero cuando necesita realizar una llamada a la API, debe esperar la respuesta. Ahí es donde entra en juego el middleware.
Un middleware popular para manejar acciones asincrónicas es Redux Thunk. Con Redux Thunk, puedes enviar funciones en lugar de objetos simples como acciones. Luego, estas funciones pueden realizar operaciones asincrónicas y enviar otras acciones cuando finalizan.
A continuación se muestra un ejemplo del uso de Redux Thunk para realizar una llamada API:
importar {createStore, applyMiddleware} desde 'redux'; importar procesador desde 'redux - procesador'; const estadoinicial = {datos: nulo, cargando: falso, error: nulo}; const reductor = (estado = estado inicial, acción) => { cambiar (acción.tipo) { caso 'FETCH_DATA_REQUEST': retorno { ... estado, carga: verdadero, error: nulo }; caso 'FETCH_DATA_SUCCESS': retorno {...estado, carga: falso, datos: acción.payload}; caso 'FETCH_DATA_FAILURE': retorno {...estado, cargando: falso, error: action.payload}; predeterminado: estado de retorno; } }; const store = createStore(reductor, applyMiddleware(thunk)); const fetchData = () => { return async (despacho) => { despacho({ tipo: 'FETCH_DATA_REQUEST' }); intente { respuesta constante = await fetch('https://api.example.com/data'); datos constantes = espera respuesta.json(); despacho ({ tipo: 'FETCH_DATA_SUCCESS', carga útil: datos }); } catch (error) { despacho({ tipo: 'FETCH_DATA_FAILURE', carga útil: error.message }); } }; };
En este ejemplo, elbuscar datosLa función es una acción de procesador. Primero envía unFETCH_DATA_REQUESTacción para indicar que se están recuperando los datos. Luego realiza la llamada API. Si la llamada tiene éxito, envía unFETCH_DATA_SUCCESSacción con los datos. Si hay un error, envía unFETCH_DATA_FAILUREacción con el mensaje de error.
Diferencias clave
Entonces, ¿cuáles son las diferencias clave entre un reductor y un middleware?
- Funcionalidad: El trabajo principal de un reductor es actualizar el estado en función de las acciones. Es una función pura que toma el estado actual y una acción y devuelve un nuevo estado. El middleware, por otro lado, se utiliza para interceptar acciones y agregar funcionalidades adicionales, como manejar operaciones asincrónicas o registros.
- Momento: Los reductores se llaman después de enviar una acción y antes de actualizar el estado. Se llama al middleware antes de que la acción llegue al reductor, lo que le permite modificar la acción o realizar otras tareas.
- Tipo de función: Los reductores son funciones puras, lo que significa que siempre devuelven la misma salida para la misma entrada y no tienen ningún efecto secundario. El middleware puede ser funciones impuras, ya que pueden realizar efectos secundarios como realizar llamadas API o iniciar sesión.
Por qué ambos son importantes
Tanto los reductores como el middleware son partes esenciales de una aplicación Redux. Los reductores mantienen la gestión de su estado organizada y predecible. Garantizan que el estado de su aplicación cambie de forma controlada. El middleware, por otro lado, agrega flexibilidad y funcionalidad adicional a su aplicación. Le permite manejar escenarios complejos, como operaciones asincrónicas, sin saturar sus reductores.
Como proveedor de reductores, entendemos la importancia de contar con reductores de alta calidad que funcionen bien con middleware. NuestroReductor de titanio Gr7yReductor de circonioestán diseñados para ser compatibles con una amplia gama de middleware, lo que garantiza que su aplicación se ejecute sin problemas.
Conclusión
En conclusión, los reductores y el middleware en Redux tienen propósitos diferentes pero complementarios. Los reductores son responsables de actualizar el estado, mientras que el middleware se utiliza para interceptar acciones y agregar funcionalidad adicional. Comprender la diferencia entre ellos es crucial para crear aplicaciones React sólidas y escalables.
Si está buscando reductores de alta calidad en el mercado, nos encantaría saber de usted. Ya sea que esté trabajando en un proyecto pequeño o en una aplicación a gran escala, nuestros reductores están diseñados para satisfacer sus necesidades. Contáctenos para iniciar una discusión sobre adquisiciones y encontrar el reductor perfecto para su proyecto.
Referencias
- Documentación oficial de Redux
- Reaccionar documentación oficial
- Repositorio Redux Thunk GitHub
