стейт) не меняется. А если яничего не даляю он тикает. Как такое фикстится?
Код надо бы
Таймер это хук со стейтом, изменение кода через useReducer
Разве есть какой-то смысл в объявлении intervalId не снаружи?
В самом компоненте? Разве это поможет? Этот хук используется в 3 местах
Я к тому, что таймер контролируется только лишь размонтированием компонента. Проблема всё равно до конца не ясна - он останавливается при вводе, или что?
Если я не ввожу код, он тикает, как только я его ввожу и сразу стираю и так постоянно, таймер просто стоит на месте
Значит что-то хук этот дергает. Надо логику попроще у таймера, я вот не особо вижу смысла в isActive, например. Просто когда логика будет совсем минимальной, будет проще найти проблему
Вот пример накидал, при изменении стейта текста, таймер не тикает https://codesandbox.io/s/epic-cerf-v7yb0?file=/src/App.tsx
Я посмотреть не могу с телефона, сорри, к компу доступ не скоро будет. Может кто ещё глянет
const [seconds, setSeconds] = React.useState(10); React.useEffect(() => { if (seconds > 0) { setTimeout(() => setSeconds(seconds - 1), 1000); } else { setSeconds('BOOOOM!'); } });
Обсуждают сегодня