El hook useReducer
en React es una alternativa a useState
que se utiliza para gestionar estados más complejos en componentes funcionales. Es útil cuando se tiene lógica de actualización que involucra múltiples valores o cuando el estado depende de acciones previas. Funciona con un patrón similar a Redux, utilizando acciones y un reducer para definir cómo cambia el estado.
useReducer
y cuándo usarlo?
useReducer
es un hook que permite gestionar el estado utilizando un patrón de reducer
y dispatch
. Es ideal cuando se trabaja con lógica de estado que requiere múltiples subvalores, dependencias en acciones anteriores o cuando se desea hacer más legible el código separando la lógica de actualización en una función externa.
La estructura básica de useReducer
se compone de tres elementos:
1. Reducer: Una función pura que toma el estado y una acción como parámetros, y devuelve un nuevo estado.
2. Acción: Un objeto que describe el tipo de cambio que se debe realizar en el estado.
3. Dispatch: Una función que se usa para enviar las acciones al reducer.
useReducer
import React, { useReducer } from 'react';
const initialState = { count: 0 };
function reducer(state, action) {
switch (action.type) {
case 'increment':
return { count: state.count + 1 };
case 'decrement':
return { count: state.count - 1 };
default:
return state;
}
}
function Counter() {
const [state, dispatch] = useReducer(reducer, initialState);
return (
<div>
<p>Count: {state.count}</p>
<button onClick={() => dispatch({ type: 'increment' })}>Increment</button>
<button onClick={() => dispatch({ type: 'decrement' })}>Decrement</button>
</div>
);
}
export default Counter;
En este ejemplo, useReducer
inicializa el estado con initialState
y permite que el estado cambie a través de las acciones increment
y decrement
.
useReducer
en lugar de useState
?
reducer
).
useReducer
en React
1. Gestión de formularios complejos: useReducer
es útil para manejar múltiples campos en un formulario y sus validaciones.
2. Estado global del componente: Cuando se necesita compartir un estado complejo entre componentes anidados.
Puedes encontrar más detalles sobre el uso de useReducer
en la documentación oficial de React.
Jorge García
Fullstack developer