Reactjs 基于变量以前的值进行React useState更新

Reactjs 基于变量以前的值进行React useState更新,reactjs,use-state,Reactjs,Use State,react.js站点上有以下代码: const[count,setCount]=useState(0); ... 设置计数(计数+1)}> 但是,由于count是基于其先前的值更新的,第二行不应该吗 是 setCount(prevCount=>prevCount+1)}> 通常不需要 当前活动的click listener关闭的有状态的count变量将在任何给定时间点包含当前计数。如果单击3次,组件将重新渲染3次,当前连接的侦听器关闭的计数将包含3次 如果您希望将setter函数传递到其他地方

react.js站点上有以下代码:

const[count,setCount]=useState(0);
...
设置计数(计数+1)}>
但是,由于count是基于其先前的值更新的,第二行不应该吗 是

setCount(prevCount=>prevCount+1)}>

通常不需要

当前活动的click listener关闭的有状态的
count
变量将在任何给定时间点包含当前计数。如果单击3次,组件将重新渲染3次,当前连接的侦听器关闭的
计数将包含3次

如果您希望将setter函数传递到其他地方(例如传递给子组件),并且不希望子组件也将
计数作为道具,则需要使用您正在考虑的回调表单-这会导致一些混乱的样板文件,尤其是当组件嵌套得很好时

如果在未在每次渲染时获得新闭包的函数中调用回调,则也可以在当前组件中使用回调窗体,例如对于
useffect

useEffect(() => {
  setInterval(() => {
    setCount(prevCount => prevCount + 1);
  }, 1000);
}, []);

因为那里的效果钩子只在挂载时运行,所以它可以看到的
count
变量将只是初始的0值-因此您必须使用回调表单。

count
永远不会基于其先前的值进行更新。它将根据其当前值进行更新。
<button onClick={() => setCount(prevCount => prevCount + 1)}>
useEffect(() => {
  setInterval(() => {
    setCount(prevCount => prevCount + 1);
  }, 1000);
}, []);