【发布时间】:2021-01-25 17:05:34
【问题描述】:
我有一个关于 useEffect() 与 setTimeout() 的一般性问题。
import { useState, useEffect } from 'react';
function Counter() {
const [count, setCount] = useState(0);
useEffect(() => console.log(count)); // effect
const handleClick = () => {
setCount(count + 1);
setTimeout(() => console.log(count), 5000); // log to console after 5 seconds
}
return (
<>
<p>You clicked {count} times</p>
<button onClick={handleClick}>Click Me</button>
</>
);
}
export default Counter;
在上面的代码中,
setCount(count + 1);
setTimeout(() => console.log(count), 5000);
使用setTimeout(),我试图在5 秒后记录count,到那时setCount(),虽然是异步的,但肯定会完成。
那为什么仍然打印 count 的先前值,而 useEffect() 代码打印更新后的值?谁能告诉我我错过了什么。
【问题讨论】:
标签: reactjs react-hooks use-effect