在CodeSandBox上可以找到一個問題示例。我是否在 TRUE/FALSE 值之間短路了自己?
有人可以幫助解釋為什么isOptionOne沒有按預期設定狀態變數嗎?在呼叫時setIsOptionOne,我認為我可以isOptionOne在函式的其余代碼行中使用。不幸的是,情況似乎并非如此。要驗證,請查看console.log輸出。isDefault和的兩個值isOptionOne應該匹配。
我哪里錯了?謝謝你。
uj5u.com熱心網友回復:
這是預期的行為。React 批處理狀態更新,這意味著它不會在每次setState方法呼叫后立即更新狀態并重新渲染所有內容。來自官方檔案:
setState() 將組件狀態的更改排入佇列,并告訴 React 該組件及其子組件需要使用更新的狀態重新渲染。這是您用來更新用戶界面以回應事件處理程式和服務器回應的主要方法。將
setState() 視為更新組件的請求而不是立即命令。為了更好地感知性能,React 可能會延遲它,然后一次更新多個組件。React 不保證立即應用狀態更改。
setState() 并不總是立即更新組件。它可能會批量更新或將更新推遲到以后。這使得this.state在呼叫setState() 之后立即閱讀是一個潛在的陷阱。取而代之的是使用componentDidUpdate或setState回呼 (setState(updater, callback)),它們都保證在應用更新后觸發。如果您需要根據之前的狀態設定狀態,請閱讀下面的 updater 引數。
另外,上面的檔案是針對傳統類組件的setStateAPI 的。如果您想檢測基于鉤子的狀態的變化,請使用useEffect.
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/432126.html
標籤:反应
下一篇:自定義圖示包裝組件
