Реагировать removeEventListener на компонент - PullRequest
0 голосов
/ 21 марта 2020

У меня есть 2 компонента: TestingPlace и ReactionTest.

TestingPlace:

const TestingPlace = ({onClick}) => (
    <StyledWrapper onClick={onClick}>
        ...
      </StyledWrapper>

ReactionTest:

class ReactionTest extends Component {
  constructor(props) {
    super(props);
    this.state = {
      //state }
    };
  }

  startTest = () => {
    this.removeEventListener("click", this.startTest); //TypeError: this.removeEventListener is not a function

    setTimeout(() => {
      this.addEventListener("click", this.startTest);
    }, 1000);
  };

  render() {
    return (
      <>
        <TestingPlace onClick={this.startTest} />
      </>
    );
  }
}

И я хочу в startTest () удалить событие прослушиватель в течение x секунд, а затем снова добавьте eventListenr, но он не работает. Ошибка типа: this.removeEventListener не является функцией

1 Ответ

0 голосов
/ 21 марта 2020

Ошибка указывает, что вы пытаетесь вызвать метод removeEventListener, присутствующий в классе, но его нет.

Чтобы использовать addEventListener или removeEventListener, вам необходимо присоединить его к eventTarget.

Например,

const body = document.querySelector('body')
const clickTarget = document.getElementById('click-target')

clickTarget.removeEventListener('click',
        makeBackgroundYellow,
        false

    );

Более подробная информация здесь, removeEventListener

...