我有这样一个组件:
import { useEffect, useState } from "react";
function Counter() {
const [count, setCount] = useState(0);
console.log("comp run");
const tick = () => {
setCount(count + 1);
console.log(count);
};
useEffect(() => {
const timer = setInterval(tick, 10000);
console.log("effect run");
return () => {
clearInterval(timer);
console.log("clear func run");
};
}, []);
return <div>{count}</div>;
}
export default Counter;当代码运行时,控制台输出如下:
程序运行时立即输出:
comp运行 效果运行
10秒后:
comp运行 0
10秒后:
comp运行 0
10秒后:
0(然后每10秒继续增加0)
我在这里不明白的是:"comp run“在屏幕上打印了3次。为什么是3?
发布于 2021-07-19 12:05:52
这是因为useEffect回忆录了它里面的所有价值。您可以使用两种方法:
count添加到useEffect的依赖项数组。当计数发生变化时,useEffect将刷新。
useEffect(() => {//您在这里的旧代码},计数);//这里https://stackoverflow.com/questions/68440080
复制相似问题