File size: 1,136 Bytes
68f7925
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import type { UseQueryOptions } from '@tanstack/react-query';

/**
 * React Query共通設定
 * 全APIクライアントで使用する共通のクエリオプション
 */
export const defaultQueryOptions: Partial<UseQueryOptions> = {
  // ウィンドウフォーカス時の再フェッチを無効化
  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<T = unknown>(overrides?: Partial<UseQueryOptions<T>>): Partial<UseQueryOptions<T>> {
  return { ...defaultQueryOptions, ...overrides } as Partial<UseQueryOptions<T>>;
}