慕碼人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);
}

holdtom
TA貢獻1805條經驗 獲得超10個贊
在 React 中設置狀態是異步的。這是因為它重新呈現 dom(或其部分),并且setState
調用(或掛鉤)之后的任何代碼將繼續正常執行。就設置狀態而言,忘記異步等待。
在您的示例中,我應該將頁碼傳遞給 getReports 函數。據我所知,沒有必要保留數字狀態。此外,對 的調用setReports([])
看起來也不需要,因為我認為 getReports 無論如何都應該覆蓋它。
添加回答
舉報
0/150
提交
取消