Могу ли я приостановить и отменить паузу setInterval с событием onMouseEnter / Out в React? - PullRequest
1 голос
/ 25 апреля 2020

Я хочу иметь возможность запускать setInterval при запуске приложения, но также приостанавливать его и перезапускать setInterval с событием onMouseEnter. Прямо сейчас я отправил sendInterval в жизненный цикл componentDidMount:

  componentDidMount() {
    this.timer = setInterval(() => {
      this.forward();
    }, 4000);
  }

Я знаю, что это не работает.

Я попытался обернуть setInterval в оператор if, который будет выполняться, когда я завис над компонентом, но когда компонент монтируется, я не зависаю, поэтому он не запускается. И componentDidMount срабатывает только один раз, поэтому я не уверен, как бы приостановить setInterval, если componentDidMount срабатывает только один раз.

Я также пытался создать отдельную функцию таймера вне componentDidMount, которая срабатывает при помощи componentDidMount, но по сути я столкнулся с той же проблемой. Я чувствую, что рекурсию нужно где-то здесь использовать. Я не знаю, где бы я вызвал функцию, которая запускает setInterval где-нибудь еще, кроме componentDidMount, но тогда у меня нет доступа к нему снова. Или я?

1 Ответ

0 голосов
/ 25 апреля 2020

Вы можете сохранить код таймера setInterval в функциях и сохранить ссылку на таймер в экземпляре класса (this.timer). Теперь вы можете вызвать эту функцию в componentDidMount, mouseOver et c. Эта функция должна отвечать за сброс / настройку таймера на основе условного параметра.

...