Aprender a manejar eventos en React es como aprender a dirigir una orquesta. Cada músico (o evento del usuario) espera tu señal para tocar en el momento justo. Vamos a aprender cómo «dirigir» estos eventos en tus componentes React para hacer tu aplicación interactiva y receptiva.
En React, los eventos son acciones que pueden ser desencadenadas por el usuario, como clics del ratón, pulsaciones de teclas, movimientos del ratón, etc. Manejar estos eventos correctamente es fundamental para crear una experiencia de usuario fluida y dinámica.
React envuelve los eventos del navegador nativo en lo que se llama «eventos sintéticos». Esto se hace por varias razones:
Supongamos que tienes un botón en tu componente que quieres que haga algo cuando el usuario hace clic en él. Aquí está cómo lo harías en React:
class ClickExample extends React.Component {
handleClick = () => {
alert('El botón fue clickeado!');
};
render() {
return ;
}
}
En este ejemplo, handleClick
es un método en la clase ClickExample
que se dispara cuando el botón es clickeado. El evento onClick
se asigna a este método.
Digamos que tienes un campo de entrada y quieres hacer algo con el texto cuando el usuario presiona una tecla:
class KeyPressExample extends React.Component {
handleKeyPress = (event) => {
if (event.key === 'Enter') {
alert(`Input value: ${event.target.value}`);
}
};
render() {
return ;
}
}
En este caso, handleKeyPress
se activa cada vez que se presiona una tecla en el campo de entrada. Si la tecla presionada es «Enter», se muestra una alerta con el valor de entrada.
this
dentro de la función maneja correctamente el contexto de tu componente (como se vio en los ejemplos).event.persist()
.Trabajar con formularios en React es un poco como ser un mago que manipula con cuidado el flujo de información secreta. Cada entrada del formulario es un canal místico a través del cual los usuarios envían sus preciados datos. Vamos a ver cómo puedes gestionar esta magia utilizando el estado local de React.
El estado local en React se refiere a cualquier dato que tu componente debe recordar. Es almacenado en la propiedad state
del componente y puede ser actualizado con setState
en componentes de clase o useState
en componentes funcionales. Este estado es local porque solo pertenece y es accesible dentro del componente donde se define.
Cuando construyes formularios en React, gestionar su estado correctamente es crucial para tener un control total sobre la experiencia del usuario y la recopilación de datos.
Supongamos que quieres crear un formulario simple para registrar un nombre de usuario:
class NameForm extends React.Component {
constructor(props) {
super(props);
this.state = { username: '' };
}
handleChange = (event) => {
this.setState({ username: event.target.value });
};
handleSubmit = (event) => {
alert('Se envió el nombre: ' + this.state.username);
event.preventDefault();
};
render() {
return (
);
}
}
En este componente:
React Hooks, introducidos en React 16.8, permiten usar estado y otras características de React sin escribir una clase. Aquí está el mismo formulario usando un componente funcional:
function NameForm() {
const [username, setUsername] = useState('');
const handleChange = (event) => {
setUsername(event.target.value);
};
const handleSubmit = (event) => {
alert('Se envió el nombre: ' + username);
event.preventDefault();
};
return (
);
}
event.preventDefault()
en handleSubmit
para evitar que la página se recargue.handleSubmit
.