import { useEffect, useEffectEvent, useState } from "react";
function useInterval(callback, delay) {
const onTick = useEffectEvent(callback);
useEffect(() => {
if (delay === null) return;
const id = setInterval(() => onTick(), delay);
return () => clearInterval(id);
}, [delay]);
}
export default function Clock() {
const [seconds, setSeconds] = useState(0);
const [running, setRunning] = useState(true);
useInterval(() => setSeconds((value) => value + 1), running ? 1000 : null);
return (
<button onClick={() => setRunning((value) => !value)}>
{seconds} 秒,点击{running ? "暂停" : "继续"}
</button>
);
}