Pular para o conteúdo
Skillpedia
Sites e telas (frontend)48 mil · #4313

tanstack-query-expert

Ajuda seu agente a gerenciar dados assíncronos em aplicativos React. Facilita a busca de dados, atualizações e integração com Next.js.

O que ela faz

Este especialista ajuda desenvolvedores a gerenciar dados em aplicativos web feitos com React e Next.js. Ele organiza como os dados são buscados, atualizados e exibidos, tornando o aplicativo mais rápido e estável.

Quando usar

  • ✓Ao começar a buscar dados em um aplicativo React/Next.js.
  • ✓Quando quiser que a interface do usuário pareça mais rápida, atualizando dados sem recarregar a página.
  • ✓Ao integrar a busca de dados com o Next.js para que funcione bem em servidores e navegadores.

Exemplo do que pedir para a IA

“Como posso configurar o TanStack Query para buscar dados de usuários e exibi-los na tela?”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/tanstack-query-expert/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/tanstack-query-expert/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

Ele ensina a usar um padrão chamado 'custom hook' para organizar a busca de dados. Isso envolve definir como buscar os dados, como identificá-los e como lidar com atualizações e erros.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add sickn33/agentic-awesome-skills --skill tanstack-query-expert

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/tanstack-query-expert/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Especialista TanStack Query

Você é um especialista em TanStack Query (anteriormente React Query) de nível de produção. Você ajuda desenvolvedores a criar camadas de gerenciamento de estado assíncrono robustas e de alto desempenho em aplicações React e Next.js. Você domina a busca declarativa de dados, invalidação de cache, atualizações de UI otimistas, sincronização em segundo plano, limites de erro e padrões de hidratação de renderização do lado do servidor (SSR).

Quando Usar Esta Habilidade

  • Use ao configurar ou refatorar a lógica de busca de dados (substituindo useEffect + useState)
  • Use ao projetar chaves de consulta (chaves baseadas em array, estritamente tipadas)
  • Use ao configurar o comportamento global ou específico da consulta de staleTime, gcTime e retry
  • Use ao escrever hooks useMutation para requisições POST/PUT/DELETE
  • Use ao invalidar o cache (queryClient.invalidateQueries) após uma mutação
  • Use ao implementar Atualizações Otimistas para feedback instantâneo da UX
  • Use ao integrar TanStack Query com o Next.js App Router (Server Components + hidratação de Client Boundary)

Conceitos Principais

Por que TanStack Query?

TanStack Query não é apenas para buscar dados; é um gerenciador de estado assíncrono. Ele lida com cache, atualizações em segundo plano, deduplicação de múltiplas requisições para os mesmos dados, paginação e estados de carregamento/erro prontos para uso.

Regra Geral: Nunca use useEffect para buscar dados se TanStack Query estiver disponível na pilha.

Padrões de Definição de Consulta

O Padrão de Hook Personalizado (Melhor Prática)

Sempre abstraia as chamadas useQuery em hooks personalizados para encapsular a lógica de busca, tipos TypeScript e chaves de consulta.

import { useQuery } from '@tanstack/react-query';

// 1. Define strict types
type User = { id: string; name: string; status: 'active' | 'inactive' };

// 2. Define the fetcher function
const fetchUser = async (userId: string): Promise<User> => {
  const res = await fetch(`/api/users/${userId}`);
  if (!res.ok) throw new Error('Failed to fetch user');
  return res.json();
};

// 3. Export a custom hook
export const useUser = (userId: string) => {
  return useQuery({
    queryKey: ['users', userId], // Array-based query key
    queryFn: () => fetchUser(userId),
    staleTime: 1000 * 60 * 5, // Data is fresh for 5 minutes (no background refetching)
    enabled: !!userId, // Dependent query: only run if userId exists
  });
};

Chaves de Consulta Avançadas

Chaves de consulta identificam unicamente o cache. Elas devem ser arrays, e a ordem importa.

// Filtering / Sorting
useQuery({
  queryKey: ['issues', { status: 'open', sort: 'desc' }],
  queryFn: () => fetchIssues({ status: 'open', sort: 'desc' })
});

// Factory pattern for query keys (Highly recommended for large apps)
export const issueKeys = {
  all: ['issues'] as const,
  lists: () => [...issueKeys.all, 'list'] as const,
  list: (filters: string) => [...issueKeys.lists(), { filters }] as const,
  details: () => [...issueKeys.all, 'detail'] as const,
  detail: (id: number) => [...issueKeys.details(), id] as const,
};

Mutações e Invalidação de Cache

Mutação Básica com Invalidação

Quando você modifica dados no servidor, você deve informar ao cache do cliente que os dados antigos agora estão desatualizados.

import { useMutation, useQueryClient } from '@tanstack/react-query';

export const useCreatePost = () => {
  const queryClient = useQueryClient();

  return useMutation({
    mutationFn: async (newPost: { title: string }) => {
      const res = await fetch('/api/posts', {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify(newPost),
      });
      return res.json();
    },
    // On success, invalidate the 'posts' cache to trigger a background refetch
    onSuccess: () => {
      queryClient.invalidateQueries({ queryKey: ['posts'] });
    },
  });
};

Atualizações Otimistas

Dê feedback instantâneo ao usuário atualizando o cache antes que o servidor responda, e revertendo caso a requisição falhe.

export const useUpdateTodo = () => {
  const queryClient = useQueryClient();

  return useMutation({
    mutationFn: updateTodoFn,
    
    // 1. Disparado imediatamente quando mutate() é chamado
    onMutate: async (newTodo) => {
      // Cancele quaisquer refetches pendentes para que não sobrescrevam nossa atualização otimista
      await queryClient.cancelQueries({ queryKey: ['todos'] });

      // Capture o valor anterior
      const previousTodos = queryClient.getQueryData(['todos']);

      // Atualize otimisticamente para o novo valor

…
Perguntas frequentes

O que é TanStack Query?

É uma ferramenta que ajuda a gerenciar dados que mudam com o tempo em aplicativos web, cuidando de buscar, armazenar em cache e atualizar esses dados automaticamente.

Por que não usar `useEffect` para buscar dados?

O TanStack Query é mais eficiente. Ele gerencia o cache, evita buscas repetidas e lida com estados de carregamento e erro, o que `useEffect` não faz sozinho.

O que são 'query keys'?

São identificadores únicos para cada pedaço de dado que você busca. Eles ajudam o TanStack Query a saber qual dado buscar, atualizar ou invalidar.

Detalhes

Descrição original do autor

Expert in TanStack Query (React Query) — asynchronous state management. Covers data fetching, stale time configuration, mutations, optimistic updates, and Next.js App Router (SSR) integration.

repo: sickn33/agentic-awesome-skills

Popularidade

Estrelas no GitHub
48 mil
Posição no ranking
#4313
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas