короче тебе нужно сделать так, чтобы каждый таймер сохранялся в объекте с ключами это будут их ID. Так ты сможешь управлять каждым таймером отдельно. Когда фильтруешь список, можно просто чистить конкретные таймеры по их ID.
Храни ID каждого таймера в стейте
Когда таймер должен остановиться, вызываешь clearInterval с нужным ID, который хранится в стейте
В итоге у тебя будет что-то типа этого:
const [timers, setTimers] = useState({});
useEffect(() => {
if (time) {
const timerId = setInterval(() => onTick(id), 1000);
setTimers(prev => ({ ...prev, [id]: timerId }));
playTime(id, timerId);
} else {
clearInterval(timers[id]);
stopTimer(id);
}
return () => {
clearInterval(timers[id]);
};
}, [time, id]);
когда фильтруешь список, ты можешь остановить только тот таймер, который нужен, не сбивая остальные