Saltar al contenido

Lección 9 de 12 · Lectura y práctica

Apollo Client en React: queries y estados

Respuesta rapida: Apollo Client conecta React con una API GraphQL y administra resultados, loading, errores y cache. Para un frontend profesional, la experiencia de usuario importa tanto como la query correcta. Que vas a aprender.

Del concepto a la práctica

Taller de esta lección

Una query en React no termina cuando llegan datos. La pantalla debe comunicar qué ocurre durante la carga, cuando no hay resultados y cuando el servidor falla, sin confundir esos estados.

Ejemplo resuelto

Para courses(search: "sql"), una vista muestra “Cargando” inicialmente. Si la respuesta es [], muestra “No hay cursos”. Si falla la red, muestra “No se pudo cargar” y un botón de reintento. Con dos cursos, renderiza sus títulos y no el JSON completo.

Un componente con Apollo Client 4 importaría gql desde @apollo/client y useQuery desde @apollo/client/react, bajo un ApolloProvider configurado:

tsx
import { gql } from '@apollo/client';
import { useQuery } from '@apollo/client/react';
const LIST = gql`query ListCourses($search: String!) { courses(search: $search) { id title } }`;
export function Lista() {
  const { loading, error, data, refetch } = useQuery(LIST, { variables: { search: 'sql' } });
  if (loading) return <p role='status'>Cargando</p>;
  if (error) return <div><p>No se pudo cargar</p><button onClick={() => refetch()}>Reintentar</button></div>;
  const cursos = data?.courses ?? [];
  if (!cursos.length) return <p>No hay cursos</p>;
  return <ul>{cursos.map((curso: { id: string; title: string }) => <li key={curso.id}>{curso.title}</li>)}</ul>;
}

Este caso prioriza el error y no muestra datos parciales. Para una vista que sí los admita, define errorPolicy y el mensaje correspondiente. El refetch conserva las variables actuales salvo que entregues otras.

Pruébalo

  1. Nombra la operación ListCourses.

  2. Define la selección mínima de campos.

  3. Especifica los cuatro estados visibles.

  4. Decide qué conserva un reintento.

Error frecuente: mostrar una lista vacía mientras la petición sigue pendiente. Corrige distinguiendo loading de datos vacíos.

Comprueba tu resultado

Entrega una matriz con carga, éxito vacío, éxito con datos y error. Cada fila debe tener texto o acción concreta; la fila de éxito con datos debe incluir exactamente los campos que la pantalla necesita.

Navegador, API y base de datos conectados por solicitudes, consultas y respuestas en sentidos opuestos.
CursaloMapa de práctica
Del navegador a los datos

El navegador envía una solicitud a la API. El servidor valida la operación y consulta los datos; después devuelve una respuesta que el navegador puede mostrar. La base de datos se comunica con el servidor y no directamente con el navegador.

Ver la infografía en tamaño completo ↗
Fuentes para profundizar
Respuesta rapida: Apollo Client conecta React con una API GraphQL y administra resultados, loading, errores y cache. Para un frontend profesional, la experiencia de usuario importa tanto como la query correcta.

Que vas a aprender

Apollo Client conecta React con una API GraphQL y administra resultados, loading, errores y cache. Para un frontend profesional, la experiencia de usuario importa tanto como la query correcta.

Paso 1: practica profesional

Una pantalla debe contemplar carga inicial, error, estado vacio, datos parciales y reintento. Muchos proyectos de portfolio fallan porque solo muestran el caso en que todo responde perfecto.

Paso 2: practica profesional

Nombra las operaciones GraphQL con claridad, por ejemplo GetCourseDetail o ListMarketplaceServices. Eso ayuda a debuggear, medir performance y entender logs.

Paso 3: practica profesional

En un marketplace educativo, Apollo Client puede alimentar buscadores, filtros por categoria, perfiles de expertos, detalle de curso y seguimiento de progreso sin multiplicar fetches manuales.

Ejercicio practico para portfolio

Elegi una API de cursos, empleos o productos digitales y documenta como resolverias este problema con GraphQL y Apollo. Inclui el schema, una query, una mutation, manejo de errores y una nota sobre cache o permisos. El objetivo no es memorizar sintaxis: es demostrar criterio tecnico para una entrevista junior, freelance o equipo de producto.

  • Entregable: captura del resultado, archivo con codigo y README breve.
  • Checklist: nombres claros, datos tipados, errores explicitos y flujo reproducible.
  • Conexion laboral: agregalo a tu portfolio y enlazalo desde LinkedIn o desde una propuesta del marketplace.

Cuando termines, continua con rutas de carreras, oportunidades de empleo digital y servicios publicados en el marketplace de Cursalo.

Sigue con GraphQL con Apollo para APIs modernas

Esta lección forma parte de un curso de Cursalo. Revisa su programa y elige entre la compra individual o el acceso a toda la escuela.

Si ya tenías acceso a este curso, entra con tu cuenta: tus derechos y tu progreso se conservan. No necesitas comprarlo de nuevo.

01 / ELEGIR UNA RUTA

El próximo paso

Aprende IA mientras construyes algo que sí necesitas.

Empieza por el curso inicial o explora el catálogo para encontrar una práctica alineada con tu trabajo.