Stopwatch app in react
Result
Loading...
Live Editor
function Stopwatch() { const [isRunning, setIsRunning] = useState(false); const [time, setTime] = useState(0); useEffect(() => { let intervalId; if (isRunning) { intervalId = setInterval(() => setTime((time) => time + 1), 1000); } return () => clearInterval(intervalId); }, [isRunning]); const hours = Math.floor(time / 3600); const minutes = Math.floor((time % 3600) / 60); const seconds = time % 60; const formatTime = (val) => val.toString().padStart(2, "0"); const handleStartStop = () => { setIsRunning(!isRunning); }; const handleReset = () => { setIsRunning(false); setTime(0); }; return ( <div> <div> {formatTime(hours)}:{formatTime(minutes)}:{formatTime(seconds)} </div> <button onClick={handleStartStop}>{isRunning ? "Stop" : "Start"}</button> <button onClick={handleReset}>Reset</button> </div> ); }
const formatTime = (val) => val.toString().padStart(2, "0");
If val is less than 2 digit i,e less than 10, it will add a leading zero. For example, 5 becomes "05". If val is 10 or greater, it will leave it as is. For example, 12 remains "12".