Contenido del curso
Renderizado dinámico de datos en React
Estado local e interactividad en React
Efectos secundarios y carga de datos
Tipado avanzado y arquitectura del proyecto
- 13

Simular carga de datos con useEffect en React
07:11 min - 14

Estados de carga y error con useEffect en React
09:02 min - 15

Organiza carpetas y lógica en React escalable
05:16 min - 16

Cómo migrar tu app React a TypeScript
08:45 min - 17

Cómo Devin AI migra componentes React a TypeScript
05:44 min - 18

Cierre del proyecto React: de JavaScript a TypeScript
04:05 min
Cómo limpiar dos estados con un solo clic
Resumen
Los eventos en React son la forma en que tu aplicación reacciona a la interacción del usuario, y en esta guía verás cómo funcionan onSubmit, onChange y onClick dentro de un search bar real. Si estás construyendo formularios y campos de búsqueda, entender cuándo usar cada evento te ahorra errores y mejora la experiencia de quien usa tu app.
Partimos de un archivo que ya venías trabajando: el del search bar. Ahí ya conviven dos eventos y vamos a sumarle un tercero para completar la funcionalidad de limpieza del filtro.
¿Qué hacen onSubmit y onChange en un formulario?
En el archivo del search bar ya teníamos dos eventos funcionando desde el arranque [00:32].
El primero es el onSubmit, que vive en la etiqueta form y dispara la acción handleSubmit definida arriba en el componente. Pero hay una condición clave: solo funciona si el botón está dentro de un form y tiene el tipo submit de manera explícita. Al hacer clic en ese botón, se dispara el evento [00:47].
El segundo es el onChange, y como su nombre indica, reacciona al cambio de valor del elemento donde está [01:04]. En este caso vive en un input cuyo valor es el de la ciudad. Cada vez que tecleas un carácter, se dispara el evento y ejecuta la función que setea la ciudad, manejando ese estado [01:15].
¿Qué diferencia hay entre onSubmit y onChange?
onSubmitse ejecuta cuando envías un formulario completo con un botón tipo submit.onChangese ejecuta cada vez que cambia el valor de un campo, letra por letra.
Con estos dos ya podíamos enviar el formulario y actualizar el valor de la ciudad mientras escribes.
¿Cómo limpiar dos estados con el evento onClick?
Aqui viene el problema real. Si escribes Bogotá, el estado de city se actualiza, y al dar buscar se actualiza tambien searchCity [01:44]. Ya tienes dos estados. Pero al vaciar el input solo se limpia city, mientras searchCity sigue como Bogotá y tendrias que volver a hacer submit [02:07]. En experiencia de usuario eso no es recomendable.
Para resolverlo agregamos un elemento nuevo a la interfaz, justo debajo del input [02:22]. Los pasos fueron estos:
- Envolver o wrapear el input existente con un
span. - Agregar debajo un nuevo elemento con una validacion que muestra un boton.
- Asignar a ese boton un tercer evento, el
onClick, que dispara la funcion de limpieza [02:47].
Si la funcion aun no esta declarada, el render se rompe, asi que buscamos la funcion definida y la colocamos en su lugar [03:00]. Al guardar aparece la nueva interfaz, pero el boton no se ve de inmediato porque tiene una validacion: solo aparece si existe city o searchCity [03:15].
Cuando escribes algo, el boton se muestra automaticamente. Es una X para limpiar el estado. Al hacer clic, esa funcion dispara setCity y setSearchCity a la vez, dejando ambos en el valor vacio, que es el mismo valor inicial que teniamos [03:44]. Asi cambian tanto la ciudad como la ciudad buscada de una sola pasada.
¿Cómo limpio varios estados en React con un solo clic? Dentro de la funcion que dispara el
onClick, llamas a cada funcion setter que necesites, por ejemplosetCity('')ysetSearchCity(''), y todos vuelven a su valor inicial.
¿Por qué onClick y onSubmit no son lo mismo?
Aunque ambos parecen un clic, tienen una diferencia importante que conviene tener clara [04:15].
onClickse puede usar dentro de cualquier elemento. No necesita estar en unformni tiene que ser un boton.onSubmit, aunque tambien implica un clic, obliga a estar dentro de unformy a que el boton sea de tiposubmit.
Esa es la linea que los separa. Uno es flexible y va donde quieras; el otro esta atado a la estructura del formulario.
El cambio de agregar la funcion para limpiar estados no solo toca el estado interno, tambien mejora la experiencia del usuario [04:44]. De paso se agregaron estilos a la card: el precio quedo con el mismo color verde de los botones para que llame mas la atencion, y se ajusto el tamano de letra [04:58]. Tu puedes hacer lo mismo siempre que pienses en mejorar la experiencia de quien consume tus aplicaciones.
Ahora el input ya no solo actualiza el estado de busqueda, tambien limpia ese filtro. Pero las propiedades todavia no se filtran ni se reordenan [05:20]. En la siguiente clase usaremos ese valor actualizado para reflejar los cambios en la interfaz y completar la busqueda. ¿Ya identificaste en cual de tus proyectos podrias aplicar esta logica de limpieza de estados? Cuentanos en los comentarios.