useQuery useQuery: Busca de Dados
Última atualização: 2026-11-03
useQuery useQuery: Busca de Dados
useQuery do TanStack Query gerencia todo o ciclo de vida da requisição mais o cache: ele deduplica automaticamente, refaz a busca em segundo plano, staleTime controla por quanto tempo os dados permanecem frescos, e invalidateQueries marca entradas como obsoletas para que sejam buscadas novamente. O componente apenas declara quais dados precisa e deixa o resto para a biblioteca, então a mesma query nunca é buscada duas vezes para dois componentes.
| Grupo | Dados e Engenharia |
|---|---|
| Tipo | Hook |
| Desde | TanStack Query v5 |
ℹ️ Informação O editor transpila JSX para JavaScript e renderiza a UI real na sandbox; os componentes são montados automaticamente — sem render manual.
📝 Sintaxe
import { useQuery } from '@tanstack/react-query'
const { data, isPending, isError, error, refetch } = useQuery({
queryKey: ['todo', id], // cache key: a change switches to or refetches the query
queryFn: () => fetch('/api/todos/' + id).then(r => r.json()),
staleTime: 30_000 // fresh for 30 seconds, no refetch needed
})
// isPending: first load without a cache; isFetching: any background refetch
⚙️ Parâmetros
| queryKey | A chave de cache (um array): em ['todos', id], um id alterado troca para a entrada de cache correspondente e refaz a busca, enquanto uma chave idêntica reutiliza o cache. |
|---|---|
| staleTime | Por quanto tempo os dados permanecem frescos (milissegundos): dentro dessa janela, uma remontagem usa o cache diretamente; depois, uma remontagem atualiza silenciosamente em segundo plano (stale-while-revalidate). |
Retorna:Retorna o estado da query como { data, isPending, isError, error, refetch, isFetching }: data contém os dados mais recentes e refetch invalida a entrada e a busca novamente manualmente.
▶ Exemplo
O exemplo roda direto: renderiza automaticamente ao expandir e edições valem na hora.
Saída:
A primeira leitura espera 0,8 segundo; depois, "Ler" retorna instantaneamente porque o cache Map acerta, e "refetch" força uma nova requisição e atualiza o cache — as ideias centrais por trás de staleTime e invalidação (demonstração simulada).