目的是:每隔一秒钟数字递减
但是在实现的时候出现了一个问题,setInterval产生多个定时
解决方法:将timer定义在外面,每render一次删除定时起,防止多个定时器的产生。
import { useState , useEffect} from "react";
let timer = null;
function useCountdown(initialCount) {
const [time, setTime] = useState(initialCount);
timer = setInterval(() => {
setTime(time - 1);
}, 1000);
if (time <= 0) {
clearInterval(timer);
alert('结束')
}
return time;
}
export default function App() {
clearInterval(timer);
const time = useCountdown(10);
return (
<div>
<h1>Hello CodeSandbox</h1>
<h2>{time}</h2>
</div>
);
}