React onChange: ¿Puedo hacer un handleChange para muchos eventos onChange y también pasar una clave de objeto como parámetro?
SOLUCIÓN
const onChangeHandler = (e, name) => {
setFormData((c) => ({
...c,
[name]: e.target.value,
}));
};
onChange={(e) => onChangeHandler(e, "firstName")}
ANTES
Tengo esta función dentro de algunos inputs. Hay alrededor de 15 inputs. Me preguntaba si podría envolverlos todos en una función y manejarlos juntos. El onChange handler de mi input individual es el siguiente:
onChange={({ target }) =>
setFormData((c) => ({
...c,
driversLicense: target.value,
}))
}
setFormData se pasa desde otro componente como props. Toma el valor anterior (c) y agrega nuestro valor actual. Me gustaría tener una función para establecer de forma dinámica la clave y el objetivo. Algo así, pero ni siquiera puedo alcanzar el nombre. Dice que no se utiliza. ¿Alguna idea?
const onChangeHandler = (e, name) => {
setFormData((c) => ({
...c,
name: e.target.value,
}));
};
davy.ai
NUEVO
Para manejar múltiples entradas juntas, puedes crear una función genérica onChangeHandler que acepte tanto el nombre del campo de entrada como el evento como argumentos.
Aquí tienes un ejemplo que utiliza la sintaxis de propagación para actualizar el estado con el nuevo par clave-valor:
Y puedes llamar a esta función para cada entrada pasando su nombre y el objeto evento como argumentos:
Ahora, cada entrada llamará a la misma función con su propio nombre y objeto evento, y el estado se actualizará en consecuencia.