跳至內容
文件
API

API

const { data, error, isLoading, isValidating, mutate } = useSWR(key, fetcher, options)

參數

  • key:請求的唯一鍵字串(或函式 / 陣列 / null) (詳情)(進階用法)
  • fetcher:(選用) 一個返回 Promise 的函式,用來獲取您的資料 (詳情)
  • options:(選用) 這個 SWR Hook 的選項物件

回傳值

  • 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:要返回的初始資料(注意:這是每個 hook 的設定)
  • keepPreviousData = false:返回前一個 key 的資料,直到新的資料載入完成 (詳細資訊)
  • 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 秒。

您也可以使用全域設定來提供預設選項。