0Pricing
React Academy · Aula

Armazenamento em cache, tempo de obsolescência e nova busca em segundo plano

Configure staleTime e gcTime para controlar quando os dados serão buscados novamente no servidor.

Armazenamento em cache, tempo de obsolescência e nova busca em segundo plano é uma aula grátis de React Academy no CoddyKit. Esta é a aula 2 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ê configurará staleTime e gcTime para controlar por quanto tempo o React Query mantém os dados atualizados e por quanto tempo mantém os dados armazenados em cache na memória.

Dados atualizados versus obsoletos

O React Query acompanha se os dados armazenados em cache estão 'atualizados' ou 'obsoletos'. Os dados atualizados são retornados imediatamente, sem uma solicitação de rede. Os dados obsoletos são retornados imediatamente, mas uma nova busca em segundo plano começa para atualizá-los.

staleTime

staleTime define por quanto tempo (em milissegundos) os dados permanecem atualizados. O padrão é 0 (imediatamente obsoletos). Definir esse valor como 60000 significa que os dados buscados no último minuto serão retornados sem uma nova busca em segundo plano.
useQuery({
  queryKey: ['users'],
  queryFn: fetchUsers,
  staleTime: 60_000, // fresh for 60 seconds
})

Definindo staleTime para dados estáticos

Para dados que raramente mudam (por exemplo, uma lista de países ou opções de configuração), defina um staleTime alto. Para dados em tempo real (por exemplo, preços de ações), mantenha o padrão 0 e habilite a consulta periódica.
// Effectively never stale — reload only on explicit invalidation
useQuery({ queryKey: ['countries'], queryFn: fetchCountries,
  staleTime: Infinity })

gcTime (coleta de lixo)

gcTime (anteriormente cacheTime) define por quanto tempo os dados armazenados em cache e UNUSED permanecem na memória antes de serem coletados. O padrão é 5 minutos. Mesmo após gcTime, o React Query pode buscar os dados novamente de imediato quando um novo assinante é montado.
useQuery({
  queryKey: ['products'],
  queryFn: fetchProducts,
  gcTime: 10 * 60 * 1000, // keep in memory for 10 minutes
})

staleTime versus gcTime

staleTime controla WHEN fazer uma nova busca (atualização dos dados). gcTime controla WHEN descartar os dados armazenados em cache da memória. staleTime <= gcTime é a relação típica.

Indicadores de novas buscas em segundo plano

Quando o React Query busca dados novamente em segundo plano, `isFetching` é verdadeiro mesmo que `isLoading` seja falso (os dados já estão armazenados em cache). Use isFetching para mostrar um indicador de carregamento discreto.
const { data, isLoading, isFetching } = useQuery({ /* ... */ });

return (
  <>
    {isLoading ? <Spinner /> : <DataView data={data} />}
    {isFetching && !isLoading && <RefreshIndicator />}
  </>
);

refetchOnWindowFocus

Por padrão, o React Query busca novamente as consultas obsoletas quando o usuário volta para a aba. Desative essa opção para dados que raramente são atualizados.
useQuery({
  queryKey: ['settings'],
  queryFn: fetchSettings,
  refetchOnWindowFocus: false,
})

refetchInterval para consultas periódicas

Defina `refetchInterval` para buscar automaticamente uma consulta em intervalos regulares. É útil para painéis com dados em tempo real.
useQuery({
  queryKey: ['liveStats'],
  queryFn: fetchStats,
  refetchInterval: 5000, // every 5 seconds
})

Dados de reserva

Use `placeholderData` para mostrar os dados anteriores enquanto uma nova busca está em andamento, evitando mudanças no layout. A opção keepPreviousData facilita isso na paginação.
import { keepPreviousData } from '@tanstack/react-query';

useQuery({
  queryKey: ['posts', page],
  queryFn: () => fetchPage(page),
  placeholderData: keepPreviousData,
})

Verificação rápida

O que a configuração de staleTime: Infinity em uma consulta produz?

Recapitulação

staleTime controla a atualização — por quanto tempo os dados permanecem atualizados antes de disparar uma nova busca em segundo plano. gcTime controla a memória — por quanto tempo os dados não utilizados permanecem armazenados em cache. isFetching sinaliza novas buscas em segundo plano. Use placeholderData para uma paginação suave.

A seguir

Próxima lição: **Alterações com useMutation** — você enviará dados para APIs e invalidará consultas após o sucesso.

Perguntas Frequentes

A aula “Armazenamento em cache, tempo de obsolescência e nova busca em segundo plano” é grátis?

Sim — o texto completo de “Armazenamento em cache, tempo de obsolescência e nova busca em segundo plano” é 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 “Armazenamento em cache, tempo de obsolescência e nova busca em segundo plano”?

Configure staleTime e gcTime para controlar quando os dados serão buscados novamente no servidor. 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 2 de 4.

Quanto tempo leva a aula “Armazenamento em cache, tempo de obsolescência e nova busca em segundo plano”?

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