Misión 1 · Lección 2

Hooks en Componentes Funcionales

Objetivos

¿Qué son los Hooks?

Reglas de los Hooks

useState

Maneja estado local en un componente.

import { useState } from "react";

export default function Contador() {
  const [count, setCount] = useState(0);
  return (
    <button onClick={() => setCount(count + 1)}>
      Clics: {count}
    </button>
  );
}

useState con objetos

const [usuario, setUsuario] = useState({
  nombre: "Ana",
  edad: 25
});

function actualizarNombre() {
  setUsuario({ ...usuario, nombre: "María" });
}

Usa el operador ... (spread) para no perder propiedades previas.

useEffect

Permite ejecutar código cuando el componente se renderiza o cambian dependencias.

import { useState, useEffect } from "react";

export default function DatosUsuario({ id }) {
  const [usuario, setUsuario] = useState(null);

  useEffect(() => {
    fetch(`/api/usuarios/${id}`)
      .then(res => res.json())
      .then(data => setUsuario(data));
  }, [id]);

  return usuario ? <p>{usuario.nombre}</p> : <p>Cargando...</p>;
}

Limpieza en useEffect

Ideal para limpiar suscripciones, temporizadores o listeners.

useEffect(() => {
  const timer = setInterval(() => {
    console.log("tick");
  }, 1000);

  return () => clearInterval(timer); // limpieza
}, []);

Otros Hooks básicos

Ejercicio Guiado 🛠️

  1. Crea un componente <Reloj /> que muestre la hora actual usando useState.
  2. Usa useEffect para actualizar la hora cada segundo con setInterval.
  3. Asegúrate de limpiar el intervalo en el return del efecto.