亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

react-query:當且僅當沒有錯誤時重新獲取

react-query:當且僅當沒有錯誤時重新獲取

不負相思意 2023-07-14 09:31:58
在我的根組件上,我使用 use 查詢來獲取用戶詳細信息。但問題是在我注冊或登錄之前,它重新刷新了太多次。結果我什至無法順利填寫注冊/登錄表單。有沒有辦法,只有回調函數沒有返回錯誤時才會重新獲???這是我嘗試過的const FetchCurrentUser = async () => {  setAuthToken(localStorage.token);  const {    data: { user },  } = await axios.get(`${process.env.API_URL}/api/users/auth`);  return user;};const RouterController = () => {  const { data: updatedUser, isLoading, error: fetchError } = useQuery(    "user",    FetchCurrentUser,     );}
查看完整描述

4 回答

?
慕田峪4524236

TA貢獻1875條經驗 獲得超5個贊

我不確定我是否正確理解了這個問題。我假設您正在嘗試獲取用戶數據,但如果失敗您不想重試,這是正確的嗎?

React Query 有一些默認值,對于新用戶來說可能會很棘手。來自文檔:

失敗的查詢會以靜默方式重試 3 次,并在捕獲錯誤并將其顯示到 UI 之前進行指數退避延遲。

enabled您還可以通過在useQuery掛鉤上將 config 屬性設置為 false 來停用自動請求,并使用該refetch函數手動觸發請求。


查看完整回答
反對 回復 2023-07-14
?
函數式編程

TA貢獻1807條經驗 獲得超9個贊

如果你想在 api 請求失敗后停止重試,你可以使用retryoption 并將其設置為 false



useQuery('',fn,{

retry:false

})

https://react-query-v3.tanstack.com/reference/useQuery#_top


查看完整回答
反對 回復 2023-07-14
?
慕尼黑的夜晚無繁華

TA貢獻1864條經驗 獲得超6個贊

處理此問題的另一種方法是在查詢選項中設置“enabled: false”,并且每當您希望調用 API 時,請使用重新獲取。在你的情況下,它會是這樣的:


const RouterController = () => {

  const { data: updatedUser, isLoading, error: fetchError, refetch } = useQuery(

    "user",

    FetchCurrentUser,

    {

      enabled: false,

    },

  );


  const handleClick = () => {

    refetch();

}

}


查看完整回答
反對 回復 2023-07-14
?
偶然的你

TA貢獻1841條經驗 獲得超3個贊

有一種簡單的方法可以在所需數據準備好之前停止此 API 調用。您需要做的只是設置enabled: false,query options然后在數據準備好時將其設置為 true。


const RouterController = () => {

  const { data: updatedUser, isLoading, error: fetchError } = useQuery(

    "user",

    FetchCurrentUser,

   {

     enabled: !!requiredData,

   },

  );

}

不過,我你的代碼結構不是那么清晰。因此,我認為您的代碼結構可能還有其他問題。


查看完整回答
反對 回復 2023-07-14
  • 4 回答
  • 0 關注
  • 210 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號