用usestate这个hooks返回的函数来更新是异步的,若是我们想根据最新的state来更新state,可以这样写:
import React, { useState } from 'react';
function MyComponent() {
const [count, setCount] = useState(0);
const increment = () => {
setCount(count + 1);
};
const doubleIncrement = () => {
increment();
// 使用函数式更新,确保在更新时使用最新的状态值
// setCount((prevCount) => prevCount * 2); // 会输出 2
setCount(count * 1); // 会输出 0,因为count取得还是初始值0,并不是
经过increment()异步更新之后的1
};
return (
<div>
<div>Count: {count}</div>
<button onClick={doubleIncrement}>Double Increment</button>
</div>
);
}
export default MyComponent;