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

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

反應本機 | useState 異步等待

反應本機 | useState 異步等待

慕碼人8056858 2023-05-19 15:09:32
我必須更新狀態并在函數中使用它。它不會發生,因為我不能讓它在當前系統中等待。它獲取以前的數據并運行它。我怎么拿得???例如3時頁面的最后一個值為1。Click正在運行,它應該作為getReports中的1工作,但3工作。下一個是 1,但我需要那個瞬間。const onClick = () => {    setReports([]);    setPage(1);    getReports(); <- use page and reports list}
查看完整描述

2 回答

?
鳳凰求蠱

TA貢獻1825條經驗 獲得超4個贊

快速解決方案,獲取以前的值,增加它并用這個新值更新狀態。在下一行中,將相同的增量值作為參數傳遞給getReports(new Value)。在這里,我們將僅使用狀態來保留最后的數字/索引。


但是如果你只想使用狀態,那么你不應該getReports()馬上調用,相反你可以使用useEffect監聽狀態的變化,然后在變化時調用方法。就像是:


const [page, setPage] = React.useState(0);


  React.useEffect(() => {

    getReports();

  }, [page]);


 const onClick = () => {

    setReports([]);


    setPage(1);


    // If page number is always incrementing

    setPage(page+1);

 }


查看完整回答
反對 回復 2023-05-19
?
holdtom

TA貢獻1805條經驗 獲得超10個贊

在 React 中設置狀態是異步的。這是因為它重新呈現 dom(或其部分),并且setState調用(或掛鉤)之后的任何代碼將繼續正常執行。就設置狀態而言,忘記異步等待。

在您的示例中,我應該將頁碼傳遞給 getReports 函數。據我所知,沒有必要保留數字狀態。此外,對 的調用setReports([])看起來也不需要,因為我認為 getReports 無論如何都應該覆蓋它。


查看完整回答
反對 回復 2023-05-19
  • 2 回答
  • 0 關注
  • 182 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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