For the complete documentation index, see llms.txt. This page is also available as Markdown.

RTK Query

RTK Query는 Redux Toolkit의 강력한 데이터 가져오기 및 캐싱 계층입니다. 비동기 액션 생성기를 작성할 필요를 없애 주며, 로딩 상태, 캐싱, 데이터 동기화를 자동으로 관리합니다.

기본 클라이언트 구성

모든 RTK 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, // 예: https://api.decentraland.org
  
  prepareHeaders: (headers, { getState }) => {
    const state = getState() as RootState;
    
    // 인증 토큰 추가
    const token = state.user.session?.authToken;
    if (token) {
      headers.set('authorization', `Bearer ${token}`);
    }
    
    // web3 컨텍스트용 체인 ID 추가
    const chainId = state.user.chainId;
    if (chainId) {
      headers.set('x-chain-id', String(chainId));
    }
    
    // 표준 헤더
    headers.set('accept', 'application/json');
    headers.set('content-type', 'application/json');
    
    return headers;
  },
  
  credentials: 'omit', // 백엔드가 쿠키를 필요로 하면 'include'
});

클라이언트 인스턴스

태그 규칙

태그는 캐시 무효화와 동기화에 사용됩니다. 다음 규칙을 따르세요:

태그 명명

리소스 유형
쿼리 태그
뮤테이션 무효화 대상

컬렉션

'Parcels' (복수형)

'Parcels'

단일 엔티티

{type: 'Parcels', id: '123'}

{type: 'Parcels', id: '123'}

목록 + 상세

['Parcels', {type: 'Parcels', id}]

['Parcels'] 또는 특정 id

태그 예시

엔드포인트 생성

엔드포인트는 다음 위치의 기능과 함께 배치하는 것이 좋습니다 feature.client.ts 파일.

쿼리 엔드포인트(읽기)

뮤테이션 엔드포인트(쓰기)

낙관적 업데이트

사용 onQueryStarted 실패 시 자동 롤백되는 낙관적 UI 업데이트용.

고급 쿼리 옵션

폴링

쿼리 건너뛰기

지연 쿼리

응답 변환

사용자 정의 직렬화

페이지네이션이나 검색의 경우 캐시 키 직렬화를 사용자 지정하세요:

오류 처리

사용자 정의 오류 처리

컴포넌트에서의 사용법:

캐시 관리

수동 캐시 업데이트

캐시 무효화

클라이언트 상태 초기화

데이터 사전 가져오기

모범 사례

1. 설명적인 엔드포인트 이름 사용

2. 포괄적인 태그 제공

3. 로딩 및 오류 상태 처리

4. 타입 가드 사용

다음 단계

마지막 업데이트