TanStack Query (React Query)
O TanStack Query é a ferramenta padrão para gerenciamento de estado de servidor (Server State). Ele lida com cache, sincronização e atualização de dados vindos de APIs.
Por que usar?
Diferente do Redux, que foca em estado global do cliente, o TanStack Query entende que dados de API são "emprestados" e podem estar desatualizados. Ele automatiza tarefas como:
- Loading states (carregando)
- Error states (erro)
- Cache e revalidação (refetch)
- Paginação e scroll infinito
Quando usar?
- Todas as chamadas GET: Para buscar dados que serão exibidos na tela.
- Mutations (POST, PUT, DELETE): Para alterar dados no servidor e atualizar o cache local automaticamente.
- Compartilhamento de dados entre componentes: Dois componentes podem chamar o mesmo hook de Query; o TanStack Query garante que apenas uma requisição seja feita e ambos recebam os mesmos dados.
Exemplo de Uso:
javascript
// Hook de busca (Query)
const { data, isLoading } = useQuery({
queryKey: ['users'],
queryFn: getUsersAction,
});
// Hook de alteração (Mutation)
const mutation = useMutation({
mutationFn: updateUserAction,
onSuccess: () => {
// Invalida o cache e força a lista de usuários a atualizar
queryClient.invalidateQueries({ queryKey: ['users'] });
},
});Quando NÃO usar?
- Estado Global UI: Coisas como "o modal está aberto?" ou "tema escuro/claro" devem ficar no estado local ou Redux/Zustand.
- Dados que não vêm de uma API: Se o dado é calculado localmente, use
useStateouuseMemo.
Melhores Práticas
- Query Keys: Use chaves estruturadas
['users', userId]para garantir que o cache seja específico para cada recurso. - Centralização: Mantenha as definições de
useQueryem hooks customizados na Camada de Funcionalidade (Feature), consumindo as Actions da Camada de Aplicação. - Não ignore o erro: Use a propriedade
errorouisErrorretornada pelo hook para dar feedback ao usuário na Camada de Tela.