Cuál es la diferencia entre:
const handleChange = (event) => { setValue(event.target.value); };
y
const handleChange = (event, newValue) => { setValue(newValue); };
? El primero parece funcionar en algunos casos, y el segundo en otros.
Antes que nada, quiero decirte que solo estás pasando una función para eventos como onChange
o onClick
, ¿verdad? Entonces, esto es simple. Podemos pasar cualquier parámetro a una función según nuestras necesidades. Para esos eventos, básicamente usamos las siguientes sintaxis:
const handleChange = (event) => { setValue(event.target.value); };
Aquí, el cambio de controlador es solo una función normal, por lo que no es necesario que solo tenga que pasar el event
como su parámetro. Puede ser cualquier cosa que necesite para procesar esa función. Para el caso de uso anterior, necesitaba un valor de entrada, por eso pasó el objeto de evento como el primer parámetro. Pero, tal vez a veces necesite datos adicionales para trabajar con esa función. Por ejemplo, tiene múltiples entradas, como a continuación. Puede agregar dichas entradas haciendo clic en el ícono más. Y podríamos estar almacenando datos en una matriz de objetos [{trait_type:'', value:''},{trait_type:'',value:''}]
, cada elemento de la matriz representa un par de esas entradas. Será eficiente usar un controlador de cambios que acepte ambos (evento e índice) de entrada como parámetros.
El punto principal es que solo está pasando funciones a esos eventos, y puede pasar 0 o más parámetros. No es la regla que tenga que pasar Event
para todos los controladores de eventos. Sí, a veces es posible que necesite un objeto de Event
para dejar de propagar el evento. Espero que esta explicación te ayude. Realice los cambios que necesite y mejor se adapten a usted. Gracias.