Consumo de APIs con Fetch: loading, error y éxito

Aprende a modelar correctamente los estados de una petición HTTP en React para evitar UIs rotas o confusas.

En interfaces reales no basta con 'pedir datos y pintarlos': necesitas gestionar estados intermedios y errores de red de forma explícita.

El patrón base consiste en modelar al menos tres situaciones: carga, éxito y error.

Si omites estos estados, el usuario verá parpadeos, pantallas vacías o mensajes poco claros cuando algo falle.

Con React, la clave es convertir cada estado de red en una representación visual coherente y predecible.

  • Una petición no es binaria; tiene fases con impacto directo en UX.
  • Durante `loading` debes mostrar feedback visual para evitar sensación de app congelada.
  • En `error` conviene mostrar mensaje legible y, si aplica, acción de reintento.
  • En `success` renderizas datos, pero contemplando también el caso de lista vacía.
  • isLoading

Modelar estados de red correctamente

Una petición no es binaria; tiene fases con impacto directo en UX.

Durante `loading` debes mostrar feedback visual para evitar sensación de app congelada.

En `error` conviene mostrar mensaje legible y, si aplica, acción de reintento.

En `success` renderizas datos, pero contemplando también el caso de lista vacía.

  • isLoading
  • error
  • data
  • empty state

Fetch en useEffect con control básico

El effect arranca la petición cuando el componente monta o cambian dependencias relevantes.

Errores comunes en fetch manual

El patrón manual funciona, pero hay trampas habituales.

No cancelar peticiones al desmontar puede provocar actualizaciones sobre componentes ya desmontados.

Duplicar lógica de loading/error en muchas pantallas aumenta deuda técnica.

No cachear respuestas repite llamadas innecesarias y empeora percepción de rendimiento.

React
13

Consumo de APIs con Fetch: loading, error y éxito

Aprende a modelar correctamente los estados de una petición HTTP en React para evitar UIs rotas o confusas.

Código del tema: const { data } = useQuery({ queryKey:["items"] });

📘 Teoría

Modelar estados de red correctamente

Una petición no es binaria; tiene fases con impacto directo en UX.

Durante `loading` debes mostrar feedback visual para evitar sensación de app congelada.

En `error` conviene mostrar mensaje legible y, si aplica, acción de reintento.

En `success` renderizas datos, pero contemplando también el caso de lista vacía.

  • isLoading
  • error
  • data
  • empty state

Fetch en useEffect con control básico

El effect arranca la petición cuando el componente monta o cambian dependencias relevantes.

Errores comunes en fetch manual

El patrón manual funciona, pero hay trampas habituales.

1

No cancelar peticiones al desmontar puede provocar actualizaciones sobre componentes ya desmontados.

2

Duplicar lógica de loading/error en muchas pantallas aumenta deuda técnica.

3

No cachear respuestas repite llamadas innecesarias y empeora percepción de rendimiento.

🧪 Aprende probando

Ejemplo Ejemplo: listado de posts con estado vacío Incluye control de carga, error y caso sin resultados.

🏁 Retos

Reto Reto: añade estado de error Completa el componente para mostrar error si la petición falla.

🧰 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. culTest

La hice en febrero de 2026 para facilitar el aprendizaje de mis alumnos. La idea es aprender desarrollo web practicando y que el proyecto siga creciendo con nuevos temas, tests y retos.

Está inspirada en MDN, W3Schools, CodePen, Manz y muchos otros sitios de documentación sobre desarrollo web. Quería combinar teoría útil, ejemplos ejecutables, retos y el sistema de tests que ya tenía en culTest. culTest

Si te gustó, si no te gustó o si quieres escribirme, puedes hacerlo en cristianeslava@gmail.com