@lexstile

Как корректно обработать клик вне компонента в react js?

Текущий код:
componentWillMount() {
    document.addEventListener('click', this.onClickOuterModal, false);
  }

  componentWillUnmount() {
    document.removeEventListener('click', this.onClickOuterModal, false);
  }

  onClickOuterModal = (event) => {
    const modal = document.getElementsByClassName('modal');
    if (modal !== event.target) {
      this.props.closeModal();
    }
  };

1. Можно ли обработать как-то элегантнее и нужно ли это делать?
2. Как сделать проверку еще и по клику на дочерние элементы компонента? (сейчас по клику внутри модального окна оно закрывается - не должно).
  • Вопрос задан
  • 1711 просмотров
Решения вопроса 1
rockon404
@rockon404 Куратор тега React
Frontend Developer
if (!modal.contains(event.target)) {
  this.props.closeModal();
}

Элемент по-хорошему получать через ref.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@kova1ev
нужно юзать порталы
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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