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>;
}