Elena0394
@Elena0394

Почему event.composedPath возвращает пустой массив?

Столкнулась с такой проблемой: есть слушатель клика на кнопке, которая удаляет карточку. Когда происходит клик по кнопке, то почему-то event.composedPath() возвращает пустой массив, а ведь должен вернуть массив с объектом событий.
remove = (event) => {
    this.mestoApi.deleteCard(this.cardData._id)
      .then(() => {
        console.log(event.composedPath())
        this.placeCardLikeIcon.removeEventListener('click', this.like);
        this.placeCardDeleteIcon.removeEventListener('click', this.remove);
        this.placeCard.remove();
      })
      .catch(err => console.log(`Ошибка: ${err}`))
  };

Вот что он возвращает
5f132582e519f253697168.png

Вопрос решился, и он оказался прост. Возвращает пустой массив, т.к пока идет запрос на сервер, event пытается найти composedPath
  • Вопрос задан
  • 134 просмотра
Решения вопроса 1
RAX7
@RAX7
Это особенность механизма обработки событий в js. После того как событие всплыло до самого верха некоторые его свойства обнуляются. Похожий вопрос есть на stackoverflow.
Можешь сделать так, чтобы обойти эту проблему
remove = (event) => {
    const path = event.composedPath();
    this.mestoApi.deleteCard(this.cardData._id)
      .then(() => {
        console.log(path);
        this.placeCardLikeIcon.removeEventListener('click', this.like);
        this.placeCardDeleteIcon.removeEventListener('click', this.remove);
        this.placeCard.remove();
      })
      .catch(err => console.log(`Ошибка: ${err}`))
  };
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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