import React, {
useState,
useEffect
} from
'react'
;
function
Timer() {
const [seconds, setSeconds] = useState(0);
const [isActive, setIsActive] = useState(
false
);
useEffect(() => {
console.log(
"Timer isActive changed:"
, isActive);
let intervalId;
if
(isActive) {
intervalId = setInterval(() => {
setSeconds((prevSeconds) =>
prevSeconds + 1);
}, 1000);
}
return
() => {
console.log(
"Timer cleanup, isActive:"
,
isActive);
clearInterval(intervalId);
};
}, [isActive]);
useEffect(() => {
console.log(
"Timer seconds changed:"
,
seconds);
if
(seconds >= 10) {
alert(
'Timer reached 10 seconds!'
);
setIsActive(
false
);
}
}, [seconds]);
const startTimer = () => {
setIsActive(
true
);
};
const stopTimer = () => {
setIsActive(
false
);
};
const resetTimer = () => {
setSeconds(0);
setIsActive(
false
);
};
return
(
<div>
<h2>Timer: {seconds} seconds</h2>
<button onClick={startTimer}>Start</button>
<button onClick={stopTimer}>Stop</button>
<button onClick={resetTimer}>Reset</button>
</div>
);
}
export
default
Timer;