Repaso
English
Frontend y webIntermedioFE-10

useEffect(fn, []) ejecuta fn…

Opciones

  1. Después de cada render del mismo componente
  2. Una vez tras el montaje, y limpia al desmontar (Opción correcta)
  3. Antes del primer render del componente
  4. Nunca, porque un array vacío desactiva los efectos

Respuesta

Una vez tras montarse el componente (limpieza al desmontar); en desarrollo, StrictMode monta, desmonta y vuelve a ejecutar una vez para sacar a la luz bugs

Por qué

useEffect ejecuta efectos secundarios (traer datos, suscripciones, timers) después de que React dibuje el componente.

El array de dependencias dice cuándo volver a ejecutarlo: [] = solo tras el primer render; [userId] = cada vez que cambie userId; sin array = tras cada render.

La función que devuelves es la limpieza (cancelar suscripciones, limpiar timers). En desarrollo, StrictMode ejecuta los efectos dos veces a propósito para revelar limpiezas que faltan.

Recuerda

El array de dependencias controla cuándo se vuelve a ejecutar un efecto.

Términos clave

Practica esta pregunta en Repaso