RTK Query
RTK Query es la potente capa de obtención y almacenamiento en caché de datos de Redux Toolkit. Elimina la necesidad de escribir creadores de acciones asíncronas y gestiona automáticamente los estados de carga, el caché y la sincronización de datos.
Configuración base del cliente
Todos los endpoints de RTK Query se extienden desde una única instancia base del cliente.
Configuración de la 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, // p. ej., https://api.decentraland.org
prepareHeaders: (headers, { getState }) => {
const state = getState() as RootState;
// Añadir token de autenticación
const token = state.user.session?.authToken;
if (token) {
headers.set('authorization', `Bearer ${token}`);
}
// Añadir chain ID para el contexto web3
const chainId = state.user.chainId;
if (chainId) {
headers.set('x-chain-id', String(chainId));
}
// Encabezados estándar
headers.set('accept', 'application/json');
headers.set('content-type', 'application/json');
return headers;
},
credentials: 'omit', // o 'include' si el backend requiere cookies
});Instancia del Cliente
Convenciones de Tags
Los tags se usan para la invalidación y sincronización del caché. Sigue estas convenciones:
Nomenclatura de Tags
Colecciones
'Parcels' (plural)
'Parcels'
Entidad individual
{type: 'Parcels', id: '123'}
{type: 'Parcels', id: '123'}
Lista + Detalle
['Parcels', {type: 'Parcels', id}]
['Parcels'] o id específico
Ejemplos de Tags
Creando Endpoints
Los endpoints DEBERÍAN ubicarse junto con su feature en feature.client.ts archivos.
Endpoint de Query (Lectura)
Endpoint de Mutación (Escritura)
Actualizaciones Optimistas
Usa onQueryStarted para actualizaciones optimistas de UI con reversión automática en caso de fallo.
Opciones avanzadas de Query
Polling
Omitir Query
Query perezosa
Transformar Respuesta
Serialización Personalizada
Para paginación o búsqueda, personaliza la serialización de la clave de caché:
Manejo de errores
Manejo de Errores Personalizado
Uso en componentes:
Gestión del Caché
Actualizaciones manuales del caché
Invalidar Caché
Restablecer el estado del cliente
Prefetch de Datos
Buenas prácticas
1. Usar nombres descriptivos para los endpoints
2. Proveer tags comprehensivos
3. Manejar estados de carga y error
4. Usar Type Guards
Siguientes pasos
Aprende sobre Gestión de Estado para estado UI local
Revisar Patrones de Componentes para ejemplos de uso
Entender Integración Web3 para datos de blockchain
Última actualización