Таймер Помодоро. При каждом обновлении стейт таймера в интервале, почему-то, передается начальное значение таймера, когда я только запускал таймер. И получается, что проверки на (timer === 0 ....) не проходят, потому что в интервале таймер (значение) всегда одинаковое (хотя оно обновляется). Почему так происходит и как сделать, чтобы после каждой пройденной секунды в интервале было обновленное значение таймера??? (Код не весь, а только часть, где видна проблема)
export const App = () => {
const [breakLength, setBreakLength] = useState(5);
const [sessionLength, setSessionLength] = useState(25);
const [mode, setMode] = useState('Session');
const [timer, setTimer] = useState(3);
const [timerRunning, setTimerRunning] = useState(false);
const countDownTimer = () => {
clearInterval(countdown);
countdown = setInterval(() => {
if (timer === 0 && mode === 'Session') {
setMode('Break');
setTimer(breakLength * 60 + 1);
}
if (timer === 0 && mode === 'Break') {
setMode('Session');
setTimer(sessionLength * 60 + 1);
}
setTimer(prevState => prevState - 1);
}, 1000);
setTimerRunning(true);
};
return (
<Button
id="start_stop"
onClick={() => {
countDownTimer();
}}
icon={<FaPlay className="fa fa-play" />}
>
)