Imagina que en tres componentes diferentes necesitas un toggle (un booleano que alterna entre true y false). En cada uno escribes:
Son solo dos líneas, pero se repiten en cada componente. Y si la lógica fuera más compleja (como un fetch con loading/error), estarías copiando 10-15 líneas idénticas.
Un hook personalizado es una función que:
use (convención obligatoria)Ahora en cualquier componente:
Un detalle crucial: los custom hooks comparten lógica, no estado. Si dos componentes usan useToggle, cada uno tiene su propia copia independiente del estado.
Un hook que sincroniza el estado con localStorage:
Uso:
Uso:
Compara esto con escribir useState + useEffect + fetch en cada componente que necesita datos. El custom hook reduce todo a una sola línea.
use: useToggle, useFetch, useLocalStorageuseToggle.js, useFetch.js[valor, setter] (como useState){ data, loading, error } (como useFetch)useToggle.js, completa el hook: usa useState, crea las funciones toggle, setTrue, setFalse, y devuelve [value, toggle, setTrue, setFalse]App.js, importa y usa useToggle para controlar la visibilidad de un panelLos custom hooks son el mecanismo de abstracción de React. Con ellos, extraes patrones, reduces duplicación y creas tu propia librería de herramientas reutilizables.