API
const { data, error, isLoading, isValidating, mutate } = useSWR(key, fetcher, options)パラメータ
key: リクエストの一意なキー文字列(または関数/配列/null)(詳細)、(高度な使用方法)fetcher: (*オプション*)データをフェッチするPromiseを返す関数 (詳細)options: (*オプション*)このSWRフックのオプションオブジェクト
戻り値
data:fetcherによって解決された、指定されたキーのデータ(ロードされていない場合はundefined)error:fetcherによってスローされたエラー(またはundefined)isLoading: 進行中のリクエストがあり、「ロードされたデータ」がない場合。フォールバックデータと以前のデータは「ロードされたデータ」とは見なされません。isValidating: リクエストまたは再検証のロードがある場合mutate(data?, options?): キャッシュされたデータを変更する関数 (詳細)
詳細はこちらをご覧ください。
オプション
suspense = false: React Suspenseモードを有効にする (詳細)fetcher(args): fetcher関数revalidateIfStale = true: 陳腐化したデータがあっても自動的に再検証する (詳細)revalidateOnMount: コンポーネントがマウントされたときの自動再検証を有効または無効にする (詳細)revalidateOnFocus = true: ウィンドウがフォーカスされたときに自動的に再検証する (詳細)revalidateOnReconnect = true: ブラウザがネットワーク接続を回復したときに自動的に再検証する(navigator.onLine経由) (詳細)refreshInterval(詳細)- デフォルトでは無効:
refreshInterval = 0 - 数値に設定すると、ポーリング間隔(ミリ秒)
- 関数に設定すると、関数は最新のデータを受け取り、ミリ秒単位の間隔を返す必要があります。
- デフォルトでは無効:
refreshWhenHidden = false: ウィンドウが見えない場合のポーリング(refreshIntervalが有効な場合)refreshWhenOffline = false: ブラウザがオフラインの場合のポーリング(navigator.onLineによって決定)shouldRetryOnError = true: fetcherにエラーがある場合に再試行するdedupingInterval = 2000: 同じキーを持つリクエストをこの時間範囲(ミリ秒)で重複排除するfocusThrottleInterval = 5000: 時間範囲(ミリ秒)内に一度だけ再検証するloadingTimeout = 3000: onLoadingSlowイベントをトリガーするタイムアウト(ミリ秒)errorRetryInterval = 5000: エラー再試行間隔(ミリ秒)errorRetryCount: エラー再試行の最大回数fallback: 複数のフォールバックデータのキーバリューオブジェクト (例)fallbackData: 返される初期データ(注:フックごとに設定)keepPreviousData = false: 新しいデータがロードされるまで、前のキーのデータを使用する (詳細)onLoadingSlow(key, config): リクエストのロードに時間がかかりすぎる場合のコールバック関数(loadingTimeoutを参照)onSuccess(data, key, config): リクエストが正常に完了した場合のコールバック関数onError(err, key, config): リクエストがエラーを返した場合のコールバック関数onErrorRetry(err, key, config, revalidate, revalidateOps): エラー再試行のハンドラonDiscarded(key): 競合状態のためにリクエストが無視された場合のコールバック関数compare(a, b): 返されたデータが変更されたかどうかを検出して、不要な再レンダリングを回避するために使用される比較関数。デフォルトでは、stable-hash (新しいタブで開きます)が使用されます。isPaused(): 再検証の一時停止を検出するための関数。trueを返す場合、フェッチされたデータとエラーは無視されます。デフォルトではfalseを返します。use: ミドルウェア関数の配列 (詳細)
💡
低速ネットワーク環境下(2G、<=70Kbps)では、errorRetryIntervalはデフォルトで10秒、
loadingTimeoutはデフォルトで5秒になります。
デフォルトオプションを設定するには、グローバル設定も使用できます。