0Pricing
React Academy · Lección

Configurar React Query y QueryClient

Instale TanStack Query, envuelva la aplicación en QueryClientProvider y ejecute su primer useQuery.

Configurar React Query y QueryClient es una lección gratuita de React Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de React Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de React Academy incluye 4 lecciones en total.

Bienvenida

En esta lección instalará TanStack Query, configurará QueryClient y QueryClientProvider, y ejecutará su primer useQuery para obtener datos de una API.

¿Qué es React Query?

TanStack Query (anteriormente React Query) gestiona el estado del servidor: obtiene, almacena en caché, sincroniza y actualiza datos de fuentes remotas. Sustituye la gestión manual de los estados de carga y error y la obtención de datos basada en useEffect.

Instalación

Instale el paquete principal y, opcionalmente, DevTools.
npm install @tanstack/react-query
npm install @tanstack/react-query-devtools --save-dev

Creación de un QueryClient

Cree una instancia de QueryClient para almacenar toda la caché y la configuración. Pásela a QueryClientProvider, que envuelve la aplicación.
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';

const queryClient = new QueryClient();

createRoot(document.getElementById('root')).render(
  <QueryClientProvider client={queryClient}>
    <App />
  </QueryClientProvider>
);

Su primer useQuery

Llame a useQuery con un array queryKey y una queryFn que devuelva los datos. La clave identifica de forma única la entrada almacenada en caché.
import { useQuery } from '@tanstack/react-query';

function Posts() {
  const { data, isLoading, isError } = useQuery({
    queryKey: ['posts'],
    queryFn: () => fetch('/api/posts').then(r => r.json()),
  });

  if (isLoading) return <p>Loading...</p>;
  if (isError) return <p>Error!</p>;
  return <ul>{data.map(p => <li key={p.id}>{p.title}</li>)}</ul>;
}

Claves de consulta

Las query keys son arrays. Añada parámetros a la clave para delimitar la entrada de caché. Claves diferentes = entradas de caché diferentes.
// All posts
useQuery({ queryKey: ['posts'], queryFn: fetchPosts })

// Post with id 5
useQuery({ queryKey: ['posts', 5], queryFn: () => fetchPost(5) })

// Posts filtered by category
useQuery({ queryKey: ['posts', { category: 'react' }], queryFn: /* ... */ })

Estado de la consulta

useQuery devuelve varias propiedades de estado: `isLoading`, `isFetching`, `isError`, `isSuccess`, `data` y `error`. `isFetching` es true incluso durante las revalidaciones en segundo plano; `isLoading` solo es true durante la primera carga.

React Query DevTools

Añada ReactQueryDevtools a la aplicación durante el desarrollo para ver todas las entradas de caché, su estado y cuándo se obtuvieron por última vez. Es una herramienta muy valiosa para la depuración.
import { ReactQueryDevtools } from '@tanstack/react-query-devtools';

<QueryClientProvider client={queryClient}>
  <App />
  <ReactQueryDevtools initialIsOpen={false} />
</QueryClientProvider>

Configuración predeterminada

Configure los valores predeterminados globales en QueryClient: staleTime, gcTime (recolección de basura), el número de reintentos y refetchOnWindowFocus.
const queryClient = new QueryClient({
  defaultOptions: {
    queries: {
      staleTime: 60_000,     // data is fresh for 60s
      retry: 2,              // retry failed queries twice
      refetchOnWindowFocus: false,
    },
  },
});

Obtención automática de datos

De forma predeterminada, React Query vuelve a obtener los datos obsoletos cuando la ventana recupera el foco, el componente se monta de nuevo y se restablece la conexión de red. Puede configurar estos comportamientos individualmente en cada consulta.

Comprobación rápida

¿Cuál es la finalidad del array queryKey en useQuery?

Resumen

Instale @tanstack/react-query, cree un QueryClient, envuelva la aplicación con QueryClientProvider y llame a useQuery con una queryKey y una queryFn. Añada DevTools para obtener visibilidad. Configure los valores predeterminados globales en QueryClient.

A continuación

Siguiente lección: **Caché, staleTime y obtención en segundo plano** — configurará staleTime y gcTime para controlar cuándo se vuelven a obtener los datos.

Preguntas frecuentes

¿La lección «Configurar React Query y QueryClient» es gratis?

Sí — el texto completo de «Configurar React Query y QueryClient» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de React Academy, actualiza a CoddyKit PRO. El curso de React Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Configurar React Query y QueryClient»?

Instale TanStack Query, envuelva la aplicación en QueryClientProvider y ejecute su primer useQuery. Practicas React Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar React Academy?

No se requiere experiencia previa. React Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «Configurar React Query y QueryClient»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de React Academy?

Sí. Cada lección de React Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Configurar React Query y QueryClient
  2. Caché, stale time y actualización en segundo plano
  3. Mutaciones con useMutation
  4. Desplazamiento infinito y paginación con useInfiniteQuery
← Volver a React Academy