假設我使用 React hook 宣告了一個本地狀態useState():
const [count, setCount] = useState(0);
稍后我想更新狀態并觸發重新渲染:
- 通過傳遞值來設定狀態
<button onClick={() => setCount(count 1)}
- 通過傳遞回呼設定狀態
<button onClick={() => setCount((prev_count) => prev_count 1)}
這兩種更新有什么區別?
uj5u.com熱心網友回復:
在這里它沒有任何區別,但是一旦您的應用程式變得更大并且您已經count在許多地方使用過,可能setState會發生多個呼叫并將資料排隊以呈現到 DOM,因此 count 的實際值可能不是你想的那樣。
這就是為什么建議在回呼中使用先前狀態的原因。prevState始終是一個可靠的解決方案,無需跟蹤每個狀態更新以了解它count是什么。
uj5u.com熱心網友回復:
- 傳遞回呼將通過回呼函式引數為您提供對當前狀態的訪問
setCount((curr_count) => curr_count 1)。 - 如果您的狀態更新是批處理的,使用狀態值
setCount(count 1)將為您提供陳舊狀態,您可能會訪問以前的狀態。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/417633.html
標籤:
上一篇:反應形式角形式組
下一篇:使用資料陣列創建卡片反應
