Skip to content

Instantly share code, notes, and snippets.

@prdxs
Last active April 20, 2021 11:58
Show Gist options
  • Save prdxs/7ae257fbc058481e295608c1fe2db5e6 to your computer and use it in GitHub Desktop.
Save prdxs/7ae257fbc058481e295608c1fe2db5e6 to your computer and use it in GitHub Desktop.
function StoppableClock({ className, style }) {
const [time, setTime] = useState(new Date().toLocaleTimeString());
const [isRunning, setIsRunning] = useState(true);
const toggle = useCallback(() => {
setIsRunning(isRunning => !isRunning);
}, []);
useEffect(() => {
if (isRunning) {
const intervalId = setInterval(() => {
setTime(new Date().toLocaleTimeString());
}, 1000);
return () => {
clearInterval(intervalId);
};
}
}, [isRunning]);
return (
<div className={clsx('StoppableClock', className)} style={style}>
<span className="StoppableClock-time">{time}</span>
<button className="StoppableClock-button" onClick={toggle}>Toggle</button>
</div>
);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment