Новое в стеке и новое, более или менее, в JS и React (пытаюсь go через бесплатный загрузочный код для кодирования).
В любом случае, я работаю над созданием часов Pomodoro и Я использую setInterval для обратного отсчета.
Нажатие кнопки воспроизведения / паузы меняет состояние и запускает таймер обратного отсчета. Повторное нажатие, пауза (пауза работает просто отлично). Но, снова запуская часы вверх, они значительно ускоряются, как будто, нажимая кнопку воспроизведения, он меняет интервал в setInterval, почти до точки, где он начинает обратный отсчет на единицу как обычно, затем ускоряется, отсчитывает время как обычно, затем ускоряется снова Я не уверен, где это идет не так или как это вызывается. Любая помощь приветствуется.
startStop(){
this.changeState();
this.startClock();
}
changeState(){
if (this.state.timer_Running == true){
this.setState({timer_Running: false})
} else {
this.setState({timer_Running: true})
}
}
startClock() {
this.setState({timer_State: setInterval(this.timerFunc, 1000)}); //Sets the interval at 1000ms or 1 second
}
timerFunc() {
if (this.state.timer_Running == true) { //Timer running is a state set to false so that when the play/pause button is hit, it switches to true and then the timer then begins.
if (this.state.timer_Sec == 0) {
this.setState({
timer_Sec: 10,
timer_Min: this.state.timer_Min - 1
});
}
if (this.state.timer_Sec > 0) {
this.setState({timer_Sec: this.state.timer_Sec - 1})
}
if (this.state.timer_Min <= 0 && this.state.timer_Sec == 0) {
//Need to change this to make sure that it then adds in break to replace session and start that timer.
this.stopClock();
}
} else{
this.stopClock();
}
}
stopClock() {
clearInterval(this.state.timer_State);
}