useEffect y ciclo de vida mental en componentes funcionales

Comprende cuándo y por qué se ejecuta useEffect para sincronizar React con APIs, temporizadores y otras fuentes externas.

useEffect existe para sincronizar tu componente con sistemas externos al render puro: peticiones HTTP, timers, suscripciones o APIs del navegador.

No se usa para cualquier cálculo interno. Si puedes derivarlo directamente en render, normalmente no necesitas effect.

La ejecución mental básica: React renderiza, pinta en pantalla y luego ejecuta effects según dependencias.

Pensar en efectos como sincronización (y no como 'lugar para lógica aleatoria') evita arquitectura frágil.

  • Solo cuando interactúas con algo fuera del árbol de React.
  • Casos típicos: cargar datos desde API, conectar un websocket, registrar un event listener global o manejar intervalos.
  • Si necesitas actualizar estado en base a props, primero evalúa si puede resolverse con cálculo directo en render.
  • Un effect innecesario añade renders extra y complejidad accidental.
  • Sincronización con red y backend.

Cuándo sí usar useEffect

Solo cuando interactúas con algo fuera del árbol de React.

Casos típicos: cargar datos desde API, conectar un websocket, registrar un event listener global o manejar intervalos.

Si necesitas actualizar estado en base a props, primero evalúa si puede resolverse con cálculo directo en render.

Un effect innecesario añade renders extra y complejidad accidental.

  • Sincronización con red y backend.
  • Integración con APIs del navegador.
  • Suscripciones y temporizadores.
  • Evitar duplicar estado derivable.

Cómo piensa React la ejecución

Effect con dependencias se re-ejecuta cuando alguna dependencia cambia entre renders.

Errores comunes con useEffect

Muchos bugs de React vienen de efectos mal modelados.

No declarar dependencias reales genera datos obsoletos y comportamiento inconsistente.

Meter demasiada lógica dentro de un único effect dificulta depuración y mantenimiento.

Actualizar estado sin condición dentro de un effect puede disparar bucles de render.

React
07

useEffect y ciclo de vida mental en componentes funcionales

Comprende cuándo y por qué se ejecuta useEffect para sincronizar React con APIs, temporizadores y otras fuentes externas.

Código del tema: useEffect(() => { /* sync */ }, []);

📘 Teoría

Cuándo sí usar useEffect

Solo cuando interactúas con algo fuera del árbol de React.

Casos típicos: cargar datos desde API, conectar un websocket, registrar un event listener global o manejar intervalos.

Si necesitas actualizar estado en base a props, primero evalúa si puede resolverse con cálculo directo en render.

Un effect innecesario añade renders extra y complejidad accidental.

  • Sincronización con red y backend.
  • Integración con APIs del navegador.
  • Suscripciones y temporizadores.
  • Evitar duplicar estado derivable.

Cómo piensa React la ejecución

Effect con dependencias se re-ejecuta cuando alguna dependencia cambia entre renders.

Effect dependiente de un valor
import { useEffect, useState } from 'react';

function Perfil({ userId }) {
  const [nombre, setNombre] = useState('');

  useEffect(() => {
    // sincronizar con API externa
    fetch(`/api/users/${userId}`)
      .then((res) => res.json())
      .then((data) => setNombre(data.nombre));
  }, [userId]);

  return <h2>{nombre}</h2>;
}

Errores comunes con useEffect

Muchos bugs de React vienen de efectos mal modelados.

1

No declarar dependencias reales genera datos obsoletos y comportamiento inconsistente.

2

Meter demasiada lógica dentro de un único effect dificulta depuración y mantenimiento.

3

Actualizar estado sin condición dentro de un effect puede disparar bucles de render.

🧪 Aprende probando

Ejemplo Ejemplo: sincronizar título de la pestaña Caso clásico de sincronización con API externa del navegador (document.title).

🏁 Retos

Reto Reto: dispara effect cuando cambie `query` Completa dependencias para que el efecto se ejecute cuando cambie el término de búsqueda.

🧰 Recursos

Test

Comprueba tus conocimientos con un test sobre React.

Test de React

¿Qué es esto?

Soy Cristian Eslava y a veces hago webs para procrastinar yo y vosotros 😉.

Esta la hice en febrero de 2026 para facilitar el aprendizaje de mis alumnxs. Aprender desarrollo web practicando. La idea es que crezca semanalmente con nuevos temas, tests y retos.

Inspirado en MDN, en W3Schools, en Codepen, en el crack de Manz y en mil sitios de documentación sobre desarrollo web. Quería aportar además de bloques teóricos con ejemplos, la gamificación de los retos y el sistema de test que ya tenía en culTest .

Si te gustó, si no te gustó, si quieres saludarme, o invitarme a 🍻 no dudes en escribirme en cristianeslava@gmail.com .