假设我使用React useState()
声明了一个本地状态:
const [count, setCount] = useState(0);
稍后,我想更新状态并触发重新呈现:
来设置状态
<button onClick={() => setCount(count+1)}
来设置状态
<button onClick={() => setCount((prev_count) => prev_count+1)}
这两种类型的更新有什么区别?
发布于 2022-01-21 01:45:57
这里没有任何不同,但一旦应用程序变得更大,并且在许多地方使用了count
,就有可能发生多个setState
调用,并将数据排队提交给DOM,因此计数的实际值可能不是您所认为的那样。
这正是建议在回调中使用前一个状态的原因。prevState
始终是一个可靠的解决方案,无需跟踪每个状态更新以了解count
是什么。
发布于 2022-01-21 01:44:24
传递回调的
setCount((curr_count) => curr_count+1)
访问当前状态的权限。如果您的状态更新是批处理的,使用setCount(count+1)
中的状态值将提供陈旧状态,则有可能访问以前的状态。https://stackoverflow.com/questions/70799126
复制相似问题