在 setInterval 中使用 React 狀態鉤子時,解決一個常見的警告非常重要。在某些情況下,超出初始渲染後狀態可能不會如預期更新。
問題的癥結在於捕獲的閉包設定間隔。提供給 setInterval 的回呼函數可以存取渲染時的初始狀態值。但是,後續渲染不會呼叫 useEffect(),從而使回呼函數具有過時的狀態值。這會導致 setInterval 回呼中的時間保持為 0。
要解決此問題,請使用第二種形式的狀態hooks,它接受回呼。此回呼接收目前狀態作為參數。透過利用此表單,您可以在遞增之前存取最新的狀態值。
setTime(prevTime => prevTime + 1); // Corrected version
要進一步探索,請訪問 Dan Abramov 富有洞察力的博客帖子提供了解決這個問題的替代方法。我們強烈建議深入研究它以獲得更深入的理解。
以上是為什麼我的 React setInterval 不能正確更新狀態?的詳細內容。更多資訊請關注PHP中文網其他相關文章!