Eventos y manejo de estado en React: name form interactivo
Clase 6 de 24 • Curso de React.js
Resumen
La gestión de eventos en React es una habilidad fundamental para crear aplicaciones interactivas y dinámicas. A través de los eventos, podemos capturar las acciones del usuario como clics, entradas de texto o movimientos del ratón, y responder a ellas de manera eficiente. React simplifica este proceso con su sistema de eventos sintéticos, permitiéndonos crear interfaces de usuario altamente responsivas con un código limpio y mantenible.
¿Qué son los eventos sintéticos en React?
Los eventos en React funcionan de manera similar a los eventos nativos de HTML, pero con algunas diferencias importantes. React implementa un sistema de eventos sintéticos que actúan como una capa de abstracción sobre los eventos nativos del navegador.
Una diferencia notable es la sintaxis: mientras que en HTML utilizamos nombres de eventos en minúsculas como onclick
, en React empleamos camelCase, escribiendo onClick
. Esta convención de nomenclatura es característica de React y se aplica a todos los eventos que manejamos.
Otra diferencia fundamental es que en React no pasamos strings a los manejadores de eventos, sino funciones. Esto nos permite ejecutar código más complejo y manipular el estado de nuestros componentes cuando ocurre un evento.
// HTML tradicional
<button onclick="handleClick()">Clic aquí</button>
// React
<button onClick={handleClick}>Clic aquí</button>
¿Cómo crear un formulario interactivo con eventos?
Vamos a crear un componente que capture la entrada de texto de un usuario y muestre un saludo personalizado en tiempo real. Este ejemplo ilustra perfectamente cómo los eventos y el estado trabajan juntos en React.
Creando el componente NameForm
Primero, necesitamos importar el hook useState
para manejar el estado del componente:
import React, { useState } from 'react';
const NameForm = () => {
const [name, setName] = useState('');
return (
<div>
<input
type="text"
placeholder="Ingresa tu nombre"
value={name}
onChange={(event) => setName(event.target.value)}
/>
<p>Hola, {name ? name : 'visitante'}</p>
</div>
);
};
export default NameForm;
En este componente:
- Creamos un estado llamado
name
inicializado como un string vacío - Utilizamos el evento
onChange
para detectar cuando el usuario escribe en el input - Actualizamos el estado
name
con el valor actual del input - Mostramos un saludo personalizado, usando un operador ternario para mostrar "visitante" cuando no hay nombre
Mejorando la experiencia de usuario
Para mejorar la experiencia, podemos agregar un título y estructurar mejor nuestro componente:
const NameForm = () => {
const [name, setName] = useState('');
return (
<div>
<h1>Formulario de nombre</h1>
<input
type="text"
placeholder="Ingresa tu nombre"
value={name}
onChange={(event) => setName(event.target.value)}
/>
<p>Hola, {name ? name : 'visitante'}</p>
</div>
);
};
Este patrón de diseño es muy común en React: capturar eventos del usuario, actualizar el estado y reflejar esos cambios en la interfaz de manera inmediata.
¿Qué otros eventos podemos manejar en React?
React soporta una amplia variedad de eventos que podemos utilizar para crear interfaces interactivas:
- Eventos de ratón:
onClick
,onMouseOver
,onMouseOut
- Eventos de formulario:
onChange
,onSubmit
,onFocus
,onBlur
- Eventos de teclado:
onKeyDown
,onKeyPress
,onKeyUp
- Eventos de clipboard:
onCopy
,onCut
,onPaste
Todos estos eventos siguen la misma sintaxis con camelCase y reciben funciones como manejadores.
Ejemplo de un evento onClick
En clases anteriores vimos cómo implementar un botón toggle utilizando el evento onClick
:
const ToggleButton = () => {
const [isOn, setIsOn] = useState(false);
return (
<button onClick={() => setIsOn(!isOn)}>
{isOn ? 'ON' : 'OFF'}
</button>
);
};
Este componente cambia entre los estados "ON" y "OFF" cada vez que el usuario hace clic en el botón, demostrando cómo podemos usar eventos para crear componentes interactivos.
Los eventos en React nos permiten crear aplicaciones verdaderamente interactivas, respondiendo a las acciones del usuario de manera eficiente y predecible. La combinación de eventos sintéticos y el sistema de estado de React proporciona una forma poderosa de construir interfaces de usuario dinámicas con un código limpio y mantenible. ¿Has implementado tu propio formulario siguiendo estos conceptos? Comparte tu experiencia en los comentarios y muestra cómo quedó tu implementación.