我可以在与更新状态相同的功能中使用更新状态吗?在下面的示例中,我得到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>
)
}
你只是不能。这就是我使用useReducer的原因。
不,你不能。对于功能组件,状态略有不同。当组件渲染时,将创建handleClick函数,并且由于JavaScript的工作方式,它会附加到该特定渲染的“作用域”。即使超时后,它仍然在旧的范围内。