Eventos y estado con useState

Aprende a responder a interacciones del usuario y a gestionar estado local con useState.

Cuando el usuario hace clic, escribe o selecciona algo, React responde con eventos.

function Counter() {
  function handleClick() {
    console.log('hiciste clic');
  }

  return <button onClick={handleClick}>Sumar</button>;
}

Aquí todavía no cambia la UI. Para eso necesitas estado.


useState

useState guarda datos que cambian entre renders.

import { useState } from 'react';

function Counter() {
  const [count, setCount] = useState(0);

  return (
    <button onClick={() => setCount(count + 1)}>
      Clicks: {count}
    </button>
  );
}

count es el valor actual.
setCount programa una actualización.


Cómo pensar el estado

Pon en estado solo aquello que:

  • cambia con el tiempo
  • afecta a lo que se pinta
  • no puede derivarse fácilmente de otros datos

Mal ejemplo:

const [fullName, setFullName] = useState(firstName + ' ' + lastName);

Si fullName se puede calcular, mejor no guardarlo:

const fullName = `${firstName} ${lastName}`;

Actualización basada en valor previo

Cuando la siguiente actualización depende de la anterior, usa la forma funcional:

setCount((prev) => prev + 1);

Eso evita errores cuando hay varias actualizaciones seguidas.


Reglas prácticas

  • No modifiques el estado directamente
  • Cada cambio de estado provoca un nuevo render
  • Si el dato no afecta a la UI, probablemente no debe ser estado

En la siguiente lección veremos cómo pintar listas y contenido condicional sin tropezar con keys ni con lógica desordenada.