timer = (id) =>{
const xid = this.state.todo.findIndex((el) => el.id === id);
const oldItem = this.state.todo[xid]
if(!oldItem.time){
this.interval = setInterval(() => {
if (oldItem.sec < 59) {
oldItem.sec++;
} else {
oldItem.sec = 0;
oldItem.min++;
}
this.setState(({ todo }) =>{
const newItem = {...oldItem,
min: oldItem.min,
sec: oldItem.sec,
time: true,
}
const newstate = [
...todo.slice(0,xid),
newItem,
...todo.slice(xid + 1)
]
return {
todo: newstate
}
});
}, 1000);
}
}
stopTimer = (id) =>{
const xid = this.state.todo.findIndex((el) => el.id === id);
const oldItem = this.state.todo[xid]
console.log(oldItem.time)
if(oldItem.time){
clearInterval(this.interval);
}
this.setState(({ todo }) =>{
const newItem = {...oldItem,
time: !oldItem.time,
}
const newstate = [
...todo.slice(0,xid),
newItem,
...todo.slice(xid + 1)
]
return {
todo: newstate
}
});
}
код фигня но работает почти , только таймер не останавливается когда нажимаю второй раз