import type { UseQueryOptions } from '@tanstack/react-query'; /** * React Query共通設定 * 全APIクライアントで使用する共通のクエリオプション */ export const defaultQueryOptions: Partial = { // ウィンドウフォーカス時の再フェッチを無効化 refetchOnWindowFocus: false, // コンポーネント再マウント時の再フェッチを無効化 refetchOnMount: false, // データが古くならない期間(無期限) staleTime: Infinity, // ガベージコレクション時間(24時間) gcTime: 24 * 60 * 60 * 1000, retry: 0, // エラー時のリトライ遅延 retryDelay: (attemptIndex) => Math.min(1000 * 2 ** attemptIndex, 30000), }; /** * 特定のクエリ用のオプションを作成するヘルパー関数 * @param overrides 上書きしたいオプション * @returns マージされたクエリオプション */ export function createQueryOptions(overrides?: Partial>): Partial> { return { ...defaultQueryOptions, ...overrides } as Partial>; }