4 回答

TA貢獻1875條經驗 獲得超5個贊
我不確定我是否正確理解了這個問題。我假設您正在嘗試獲取用戶數據,但如果失敗您不想重試,這是正確的嗎?
React Query 有一些默認值,對于新用戶來說可能會很棘手。來自文檔:
失敗的查詢會以靜默方式重試 3 次,并在捕獲錯誤并將其顯示到 UI 之前進行指數退避延遲。
enabled
您還可以通過在useQuery掛鉤上將 config 屬性設置為 false 來停用自動請求,并使用該refetch
函數手動觸發請求。

TA貢獻1807條經驗 獲得超9個贊
如果你想在 api 請求失敗后停止重試,你可以使用retryoption 并將其設置為 false
useQuery('',fn,{
retry:false
})
https://react-query-v3.tanstack.com/reference/useQuery#_top

TA貢獻1864條經驗 獲得超6個贊
處理此問題的另一種方法是在查詢選項中設置“enabled: false”,并且每當您希望調用 API 時,請使用重新獲取。在你的情況下,它會是這樣的:
const RouterController = () => {
const { data: updatedUser, isLoading, error: fetchError, refetch } = useQuery(
"user",
FetchCurrentUser,
{
enabled: false,
},
);
const handleClick = () => {
refetch();
}
}

TA貢獻1841條經驗 獲得超3個贊
有一種簡單的方法可以在所需數據準備好之前停止此 API 調用。您需要做的只是設置enabled: false,query options然后在數據準備好時將其設置為 true。
const RouterController = () => {
const { data: updatedUser, isLoading, error: fetchError } = useQuery(
"user",
FetchCurrentUser,
{
enabled: !!requiredData,
},
);
}
不過,我你的代碼結構不是那么清晰。因此,我認為您的代碼結構可能還有其他問題。
添加回答
舉報