设置后在功能中使用新状态

问题描述 投票:0回答:1

我可以在与更新状态相同的功能中使用更新状态吗?在下面的示例中,我得到0。

使用useEffect,可以在设置状态后立即访问新状态,但是如果要在该功能中访问该怎么办。

作为附带的问题,当状态不直接与返回值连接时,我可以还是应该使用状态?我应该改用道具吗?

function App() {
  const [count, setCount] = useState(0)

  const handleClick = async () => {
    setCount(count => (count + 1));
    await new Promise(r => setTimeout(r, 2000));
    console.log(count); // I get 0
  }

  return (
    <div>
      <Button onClick={handleClick}></Button>
    </div>
  )
}
javascript reactjs react-state
1个回答
0
投票

你只是不能。这就是我使用useReducer的原因。


0
投票

不,你不能。对于功能组件,状态略有不同。当组件渲染时,将创建handleClick函数,并且由于JavaScript的工作方式,它会附加到该特定渲染的“作用域”。即使超时后,它仍然在旧的范围内。

© www.soinside.com 2019 - 2024. All rights reserved.