Прокрутить прослушиватель событий после удаления события - PullRequest
0 голосов
/ 14 мая 2019

Я использую событие прокрутки для объекта окна в компоненте, построенном с использованием React. Я добавляю слушателя в методе жизненного цикла componentDidMount().

componentDidMount() {
window.addEventListener('scroll',this.handleScrollChange);
}

Теперь у меня есть кнопка, которая прокручивается до определенной позиции в событии клика.

Когда я нажимаю на кнопку, срабатывает следующая функция:


window.removeEventListener('scroll', this.handleScrollChange);
    this.changePageUrl(currentData);
    // Add it back again.

    this.setState(
      {
       currentData
      },
      () => {
        window.scrollTo({
          top: currentTop + 100,
          behavior: 'smooth',
        });
        setTimeout(() => {
          window.addEventListener('scroll', this.handleScrollChange);
        }, 10000);
      },
    );

Даже если я увеличу setTimeout до 10000, моя функция обработчика изменения события прокрутки this.handleScrollChange сработает, а событие прокрутки не будет удалено.

Читая некоторые другие проблемы, я уже связал свою функцию в конструкторе, так что это не проблема со ссылкой на функцию:

constructor(props) {
super(props)
this.handleScrollChange = this.handleScrollChange.bind(this);
}

Реплицированный код можно увидеть здесь в примере: https://stackblitz.com/edit/react-djblfj?file=index.js

Как удалить прослушиватель событий при нажатии кнопки и добавить его снова после завершения прокрутки click?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...