RTK Query
Configuração básica do Client
Configuração do Base Query
// src/services/baseQuery.ts
import { fetchBaseQuery } from '@reduxjs/toolkit/query/react';
import type { RootState } from '@/app/store';
export const baseQuery = fetchBaseQuery({
baseUrl: process.env.NEXT_PUBLIC_API_URL, // ex., https://api.decentraland.org
prepareHeaders: (headers, { getState }) => {
const state = getState() as RootState;
// Adicionar token de autenticação
const token = state.user.session?.authToken;
if (token) {
headers.set('authorization', `Bearer ${token}`);
}
// Adicionar chain ID para contexto web3
const chainId = state.user.chainId;
if (chainId) {
headers.set('x-chain-id', String(chainId));
}
// Headers padrão
headers.set('accept', 'application/json');
headers.set('content-type', 'application/json');
return headers;
},
credentials: 'omit', // ou 'include' se o backend exigir cookies
});Instância do Client
Convenções de Tags
Nomeação de Tag
Tipo de Recurso
Tags de Query
Mutação Invalida
Exemplos de Tags
Criando Endpoints
Endpoint de Query (Leitura)
Endpoint de Mutation (Escrita)
Atualizações Otimistas
Opções Avançadas de Query
Polling
Pular Query
Query Preguiçosa
Transformar Response
Serialização Customizada
Tratamento de Erros
Tratamento de Erro Customizado
Gerenciamento de Cache
Atualizações manuais de cache
Invalidar Cache
Resetar Estado do Client
Prefetch de Dados
Boas Práticas
1. Use nomes de endpoint descritivos
2. Forneça Tags abrangentes
3. Trate estados de carregamento e erro
4. Use Type Guards
Próximos Passos
Atualizado