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 秒。
您也可以使用全域設定來提供預設選項。