@Oversec

Как бороться с багами setInterval в react?

Есть компонент таймер, реализовал при помощи setIntarval.
1) Но проблема в том, что при смене вкладки, всё перестаёт работать, а при возвращении возобновляется, хотя действия уже прошло (Делаю реал тайм приложение). Как с этим бороться?

2) Так как таймер имеет родителя, то вставёт проблема, с родителя приходит время отсчёта, а так как состояние обновляется каждую секунду, то при обновлении родителя, таймер тоже обновляется и начинается с начала, как с этим бороться? Пытался так:
shouldComponentUpdate(nextProps, nextState) {
    if(this.state.startTime !== nextState.startTime) {
      return true;
    }

    if(this.state.text !== nextState.text) {
      return true;
    }

    return false;
  }


Но не помогло, так как состояние обновляется слишком часто
  • Вопрос задан
  • 263 просмотра
Решения вопроса 1
b0nn1e
@b0nn1e
Alcohol & Ruby on Rails
Гуглите setinterval inactive tab
Это не проблема react, а особенности JS
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
victorzadorozhnyy
@victorzadorozhnyy
у меня была подобная проблема (php+js проект), часы в 2 раза быстрее бежали. вынес в отдельный скрипт, time переменнeю на интерфейс через ajax. надеюсь поможет
вот еще посмотрите https://github.com/cwilso/metronome
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы