const [value, setValue] = useState(0);
const counter = () => {
setTimeout(() => {
// setValue(value 1);
setValue((prevState) => prevState 1);
}, 2000);
};
counter 按下按鈕時呼叫,即
<button onClick={counter}>counter</button>
setValue(value 1)如果我多次按下按鈕,為什么會更新一次值,但setValue((prevState) => prevState 1)相對于按下的數量回傳正確的值?
uj5u.com熱心網友回復:
狀態更新并不總是即時的。使用先前的值可確保您在設定值的時間點使用當前值。Kent Dodds在這篇文章中很好地解釋了這一點。更大的問題可能是,你為什么要把它包裝在一個setTimeout?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/339828.html
標籤:javascript 反应 设置超时
