0Pricing
React Academy · Aula

Configurando o React Query e o QueryClient

Instale o TanStack Query, envolva seu aplicativo em QueryClientProvider e execute sua primeira consulta com useQuery.

Configurando o React Query e o QueryClient é uma aula grátis de React Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de React Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de React Academy inclui 4 aulas no total.

Boas-vindas

Nesta lição, você instalará TanStack Query, configurará QueryClient e QueryClientProvider e executará sua primeira useQuery para buscar dados de uma API.

O que é o React Query?

TanStack Query (anteriormente React Query) gerencia o estado do servidor: busca, armazenamento em cache, sincronização e atualização de dados de fontes remotas. Ele substitui o estado manual de carregamento e erro e a busca de dados baseada em useEffect.

Instalação

Instale o pacote principal e, opcionalmente, o DevTools.
npm install @tanstack/react-query
npm install @tanstack/react-query-devtools --save-dev

Criando um QueryClient

Crie uma instância de QueryClient para armazenar toda a configuração e o armazenamento em cache. Passe-a a QueryClientProvider, que envolve seu aplicativo.
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';

const queryClient = new QueryClient();

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

Sua primeira useQuery

Chame useQuery com uma matriz queryKey e uma queryFn que retorna os dados. A chave identifica exclusivamente a entrada armazenada em cache.
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>;
}

Chaves de consulta

As chaves de consulta são matrizes. Adicione parâmetros à chave para definir o escopo da entrada do cache. Chaves diferentes = entradas de cache 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: /* ... */ })

Status da consulta

useQuery retorna várias propriedades de status: `isLoading`, `isFetching`, `isError`, `isSuccess`, `data` e `error`. `isFetching` é verdadeiro até mesmo durante novas buscas em segundo plano; `isLoading` só é verdadeiro no primeiro carregamento.

React Query DevTools

Adicione ReactQueryDevtools ao seu aplicativo durante o desenvolvimento para ver todas as entradas do cache, seus status e quando foram buscadas pela última vez. Isso é extremamente útil para depuração.
import { ReactQueryDevtools } from '@tanstack/react-query-devtools';

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

Configuração padrão

Configure os padrões globais no QueryClient: staleTime, gcTime (coleta de lixo), número de novas tentativas e refetchOnWindowFocus.
const queryClient = new QueryClient({
  defaultOptions: {
    queries: {
      staleTime: 60_000,     // data is fresh for 60s
      retry: 2,              // retry failed queries twice
      refetchOnWindowFocus: false,
    },
  },
});

Nova busca automática

Por padrão, o React Query busca novamente os dados obsoletos quando: a janela recupera o foco, o componente é montado novamente e a rede se reconecta. Essas opções podem ser configuradas individualmente em cada consulta.

Verificação rápida

Qual é a finalidade da matriz queryKey em useQuery?

Recapitulação

Instale @tanstack/react-query, crie um QueryClient, envolva seu aplicativo com QueryClientProvider e chame useQuery com uma queryKey e uma queryFn. Adicione DevTools para obter visibilidade. Configure os padrões globais no QueryClient.

A seguir

Próxima lição: **Armazenamento em cache, tempo de obsolescência e novas buscas em segundo plano** — você configurará staleTime e gcTime para controlar quando os dados serão buscados novamente.

Perguntas Frequentes

A aula “Configurando o React Query e o QueryClient” é grátis?

Sim — o texto completo de “Configurando o React Query e o QueryClient” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de React Academy, atualize para CoddyKit PRO. O curso de React Academy inclui 4 aulas no total.

O que vou aprender em “Configurando o React Query e o QueryClient”?

Instale o TanStack Query, envolva seu aplicativo em QueryClientProvider e execute sua primeira consulta com useQuery. Você pratica React Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar React Academy?

Nenhuma experiência prévia é necessária. React Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Configurando o React Query e o QueryClient”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de React Academy?

Sim. Cada aula de React Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Configurando o React Query e o QueryClient
  2. Armazenamento em cache, tempo de obsolescência e nova busca em segundo plano
  3. Mutações com useMutation
  4. Rolagem infinita e paginação com useInfiniteQuery
← Voltar para React Academy