Хочу сделать таймер обратного отсчета (25 минут). Это код в файле App.js
import './App.css';
import React, { useState } from 'react';
function App() {
const [remainingTime, setRemainingTime] = useState(1500);
const [seconds, setSeconds] = useState(0);
const [minute, setMinute] = useState(remainingTime/60);
function timer() {
setRemainingTime(remainingTime-1);
let newMinute = remainingTime/60;
let minuteArray = [...newMinute.toString()];
setMinute(parseInt(minuteArray.slice(0,2).join("")));
setSeconds(remainingTime%60);
console.log(minute);
console.log(seconds);
}
return (
<div className="App">
<div className="pomodoro">
<div className="timer">{minute}:{seconds}</div>
<div className="button-container">
<button className="start" onClick={() => setInterval(timer, 1000)}>start</button>
</div>
</div>
</div>
);
}
export default App;
Интервал не обновляет значение состояния. Значение минут всегда 25, а значение секунд всегда 0. Когда я не использую setInterval и просто использую функцию таймера, подобную этой
<button className="start" onClick={timer}>start</button>
каждый раз, когда я нажимаю кнопку «Пуск», значение меняется. Любая идея? Я знаю, что мне тоже следует использовать clearInterval, но я не знаю, куда его поместить. Должен ли я создать новую функцию, содержащую setInterval и clearInterval?