本节中,倒计时会每秒减2
来源:4-4 倒计时组件
Constandine
2022-04-10
源代码如下
useEffect(() => {
const id = setInterval(() => {
setCount((count) => {
if (count === 0) {
clearInterval(id);
onEnd && onEnd();
return count;
}
return count - 1;
});
return () => {
clearInterval(id);
};
}, 1000);
}, [time, onEnd]);
当我改成return count - 0.5时,功能是正常的
我使用的React版本是18,讲师的版本是17,会不会是这个问题?
写回答
3回答
-
慕桂英2364040
2022-04-18
原因是React18的StrictMode在development环境下useEffect会执行两次,目的是确保useEffect中的副作用是幂等的,解决方法是useEffect的回调函数所返回的函数中要清除定时器。楼主清除定时器的位置写错了。
40 -
Tomas
2022-04-21
有个同学回答正解,useEffect 清除函数位置写错了,代码已改正上传到 master 了
00 -
Tomas
2022-04-10
如果代码完全一样的话切成 17 版本试试呢
052022-12-01
相似问题