timer = (id) => {
const xid = this.state.todo.findIndex((el) => el.id === id);
const oldItem = this.state.todo[xid];
const IntervalId = setInterval(() => {
if (oldItem.sec > 0) {
oldItem.sec--;
console.log(oldItem.sec)
}
else if ( oldItem.min === 0 && oldItem.sec === 0) {
oldItem.min = 0;
oldItem.sec = 0;
}
else if (oldItem.sec === 0){
if(oldItem.min > 0){
oldItem.sec = 59;
oldItem.min--;
}
}
const secString = String(oldItem.sec).padStart(2, '0');
const minString = String(oldItem.min).padStart(2, '0');
this.setState(({ todo }) => {
const newItem = {
...oldItem,
min: minString,
sec: secString,
time: true,
intervalId: IntervalId
};
const newstate = [
...todo.slice(0, xid),
newItem,
...todo.slice(xid + 1)
];
return {
todo: newstate
};
});
}, 1000);
clearInterval(oldItem.intervalId); // Очищаем уже существующий интервал
}
stopTimer = (id) =>{
const xid = this.state.todo.findIndex((el) => el.id === id);
const oldItem = this.state.todo[xid]
clearInterval(oldItem.intervalId);
delete this.intervals
this.setState(({ todo }) =>{
const newItem = {...oldItem,
time: false,
}
const newstate = [
...todo.slice(0,xid),
newItem,
...todo.slice(xid + 1)
]
return {
todo: newstate
}
});
}
почему при когда несколько раз нажимаешь на таймер он ускоряется ?