Confundido por UseReducer.
Hola a todos, me pregunto si alguien podría ayudarme a entender useReducer. Alguien me lo sugirió porque estoy usando un formulario con muchas entradas que me gustaría actualizar dinámicamente en otras áreas de la aplicación. Soy nuevo en React y estoy teniendo dificultades para hacer que funcione como quisiera. Aquí está con lo que he estado trabajando hasta ahora.
const Form = () => {
const useReducerState = (initialState = {}) => {
const reducer = (prev, next) => ({ ...prev, ...next });
return useReducer(reducer, initialState);
};
const [state, setState] = useReducerState({
input1: "",
input2: "",
input3: "",
input4: "",
input6: "",
input7: "",
input8: "",
input9: "",
});
const handleChange = (e) => {
let proToUpdate = e.target.name;
let value = e.target.value;
setState({ [proToUpdate]: value });
}
const {
input1,
input2,
input3,
input4,
input5,
input6,
input7,
input8,
input9
} = state;
return (
// formulario JSX con entradas que coinciden con el estado anterior
)
}
La guía que seguí parece haberlo formateado de manera diferente a cómo se hace en otras guías. Como realmente no entiendo lo que está sucediendo, no puedo restablecer el formulario a los valores predeterminados, lo cual parece ser el objetivo principal del useReducer. Supongo que intenté hacer trampa y simplemente copiar la tarea de otra persona 🙂
davy.ai
Comprendiendo useReducer en ReactJS
Si eres nuevo en ReactJS y tienes dificultades para entender cómo utilizar useReducer para actualizar dinámicamente entradas en un formulario, no estás solo. Aquí te presentamos un desglose del código que has publicado y algunos consejos para entender useReducer:
El Código
Comprendiendo useReducer
useReducer
es un hook que te permite gestionar el estado de manera más compleja queuseState
.useReducer
toma como argumentos una función reductora y un estado inicial.dispatch
y toma como argumentos el estado actual y un objeto de acción.useReducer
devuelve un array que contiene el estado actual y una función de despacho.Explicación del Código
useReducerState
es un hook personalizado que inicializa el estado utilizandouseReducer
.reducer
utilizada enuseReducer
toma el estado anterior (previo) y el siguiente estado (siguiente) como argumentos y los fusiona en un nuevo objeto de estado.useReducer
es un objeto con todas las entradas que deseas actualizar dinámicamente.handleChange
se llama cada vez que cambia el valor de una entrada.proToUpdate
obtiene el atributoname
de la entrada que ha cambiado.value
obtiene el nuevo valor de la entrada que ha cambiado.setState
se llama con un objeto que tiene la propiedadname
tomada deproToUpdate
y su valor tomado devalue
.useReducer
.Consejos para Comprender useReducer
useReducer
es similar al concepto de Redux si estás familiarizado con él.useReducer
es que te permite gestionar un estado complejo de manera más predecible.switch
que manejan diferentes acciones para cambiar el estado.useReducer
caso por caso. Si solo tienes algunas piezas de estado relacionadas,useState
podría ser más sencillo.¡Espero que esto te ayude!