Countdown Widget
Build a countdown timer that takes a target time and counts down every second.
When the time reaches 0, display a message like โTimeโs up!โ.
Input: target = 10 seconds
Output: 10 โ 9 โ 8 โ ... โ 0 โ "Timeโs up!"
import React, { useState, useEffect } from 'react';
export default function App({ start = 0 }) {
const [time, setTime] = useState(start);
useEffect(() => {
if (time <= 0) return;
const timer = setTimeout(() => {
// functional update is safer
setTime((prev) => prev - 1);
}, 1000);
return () => clearTimeout(timer);
}, [time]);
return <h2>{time > 0 ? time : "Timeโs up!"}</h2>;
}