我正在使用的 API (Jikan) 剛剛升級到 v4,現在我不能同時進行 2 個以上的呼叫而不會收到太多請求的錯誤。我正在使用帶有 useQuery 鉤子的反應查詢(v3)。我在一個頁面上有 4 個電話(根據受歡迎程度、即將上映等來獲得熱門動漫)。我有兩個作業正常,另一個我想延遲,所以我仍然可以使用 React Query。我被困在如何做到這一點上。我相信這是由于關閉。我目前正在使用 setTimeout 來延遲,但我需要結果。這是我所擁有的:
const {data: animeUpcoming, isLoading: animeUpcomingLoading} = useQuery('animeByUpcoming', animeUpcomingFetcher)
const animeUpcomingFetcher = () => {
let res
setTimeout(async () => {
res = await axios('https://api.jikan.moe/v4/top/anime?filter=upcoming&limit=6')
}, 1200)
return res
}
我無法回傳 setTimeout 的值,因為它始終是 timerID。目前 res 將始終從animeUpcomingFetcher 呼叫回傳未定義。如何延遲此獲取并將結果回傳到 useQuery 掛鉤?
uj5u.com熱心網友回復:
React 查詢具有鏈接請求的概念,因此如果您要進行 4 個 API 呼叫,但一次只能進行 2 個,則可以將它們鏈接起來,以確保您一次只能進行 2 個。
例如,
1 -> 3
2 -> 4
每個數字代表一個請求。您可以使用啟用的選項在反應查詢中執行此操作。
const one = useQuery(['one'], fetcherFnOne);
const two = useQuery(['two'], fetcherFnTwo);
const three = useQuery(['three'], fetcherFnThree, { enabled: one.isSuccess });
const four = useQuery(['four'], fetcherFnFour, { enabled: two.isSuccess });
所以現在,只有一個完成后,三個才會開火。四個和兩個也一樣。
https://tanstack.com/query/v4/docs/guides/dependent-queries
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/517869.html
標籤:反应异步设置超时反应查询
上一篇:單擊按鈕時如何使用setInterval()設定狀態?
下一篇:Asyncio獲得不同的輸出
