Custom Hooks: Abstrayendo Lógica Compleja

Lectura
25 min~2 min lectura
Objetivo de la lección

Custom Hooks: abstrayendo lógica compleja Un custom hook permite extraer lógica reutilizable de un componente sin convertir esa lógica en un componente visual.

Puntos de control
  • Custom Hooks: abstrayendo lógica compleja
  • Cuándo crear un custom hook
  • Ejemplo: hook de búsqueda
  • Ejercicio: extraer un hook real

Custom Hooks: abstrayendo lógica compleja

Un custom hook permite extraer lógica reutilizable de un componente sin convertir esa lógica en un componente visual. Es una herramienta clave cuando varios componentes necesitan manejar el mismo estado, efectos, sincronización o llamadas a APIs.

Cuándo crear un custom hook

  • Cuando dos o más componentes repiten el mismo useEffect, estado o lógica de carga.
  • Cuando querés separar lógica de negocio de la UI.
  • Cuando una interacción tiene estados claros: loading, error, success, empty.
  • Cuando necesitás testear lógica sin renderizar toda una pantalla compleja.

Ejemplo: hook de búsqueda

import { useEffect, useState } from "react";

export function useSearch(query) {
  const [data, setData] = useState([]);
  const [loading, setLoading] = useState(false);
  const [error, setError] = useState(null);

  useEffect(() => {
    if (!query) return;

    let cancelled = false;
    setLoading(true);
    setError(null);

    fetch("/api/search?q=" + encodeURIComponent(query))
      .then((response) => {
        if (!response.ok) throw new Error("Search failed");
        return response.json();
      })
      .then((result) => {
        if (!cancelled) setData(result.items);
      })
      .catch((err) => {
        if (!cancelled) setError(err);
      })
      .finally(() => {
        if (!cancelled) setLoading(false);
      });

    return () => {
      cancelled = true;
    };
  }, [query]);

  return { data, loading, error };
}

Ejercicio: extraer un hook real

Tomá un componente con carga de datos y extraé la lógica a un custom hook. El componente final debería ocuparse solo de renderizar estados: cargando, error, vacío y contenido.

Checklist

  • El hook empieza con use.
  • El componente ya no contiene la lógica de fetch completa.
  • El hook devuelve datos, loading y error.
  • Existe limpieza para evitar actualizar estado si el componente se desmonta.
Laboratorio de práctica

Antes de marcar esta lección como completa, escribí una evidencia breve para React Intermedio: Patrones y Optimización: un ejemplo, una decisión, una captura, una mini demo o una nota que puedas reutilizar en portfolio.

Reflexión rápida

¿Qué cambiarías en tu forma de trabajar después de aplicar custom hooks: abstrayendo lógica compleja?

De lección a portfolio

Convertí esta lección en una prueba técnica visible.

Una app pequeña publicada, con README y decisiones explicadas, funciona mejor que una lista de tecnologías sueltas.

Paso 1

Creá una demo mínima que use el concepto de la lección.

Paso 2

Escribí un README corto con objetivo, stack, decisión técnica y mejora futura.

Paso 3

Publicá la demo y enlazala desde tu perfil profesional.

Newsletter Cursalo

Recibí rutas y cursos nuevos

Sumate para recibir recursos orientados a empleo y portfolio.

  • Rutas de empleo
  • Cursos prácticos
  • Portfolio y entrevistas

Sin spam. También podés entrar con tu cuenta para guardar progreso. Iniciá sesión

Custom Hooks: Abstrayendo Lógica Compleja | React | CursaloFalar no WhatsApp