Как использовать событие e.stopPropagation, когда я нажимаю родительский компонент?

Как убедиться, что щелчок не срабатывает в родительском компоненте, когда я щелкаю дочерний компонент в реакции?

Я пытаюсь использовать e.stopPropagation(), но когда я нажимаю на нее, я вижу эту ошибку

"TypeError: e.stopPropagation не является функцией"

Почему так происходит??

class ModuleGroup extends React.Component {
  constructor(props) {
    super(props);
    this.toggleHidden = this.toggleHidden.bind(this);
    this.handleClick = this.handleClick.bind(this);
    this.state = {
      isVisible: false,
    };
  }

  toggleHidden() {
    this.setState({
      isVisible: !this.state.isVisible,
    });
  }

  handleClick(e) {
    // console.info("e.Target", e.currentTarget.textContent);
    console.info("e.Target", e);
    e.stopPropagation();
  }

  render() {
    return (
      <div
        onClick = {(e) => this.handleClick(this.props.id)}
        // onClick = {this.handleClick}
        className = "moduleGroup"
        onMouseEnter = {this.toggleHidden}
        onMouseLeave = {this.toggleHidden}
      >
        {this.props.id}
        <div
          value = {this.props.id}
          className = {`modulesSet ${this.state.isVisible && "visible"}`}
        >
          {this.props.modules &&
            this.props.modules.map((module) => (
              <Module key = {module.key} id = {module.key} />
            ))}
        </div>
      </div>
    );
  }
}

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
803
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

В onClick = {(e) => this.handleClick(this.props.id)} вы передаете id вместо e.

Вместо этого рассмотрите this.handleClick(e, this.props.id).

Таким образом, ваш обработчик будет выглядеть так:

handleClick(e, id) {}

Попытался ли ты:

onClick = {(e) => this.handleClick(e, this.props.id)}

handleClick(e, id) {
  // console.info("e.Target", e.currentTarget.textContent);
  console.info("e.Target", e);
  e.stopPropagation(); // Or e.preventDefault();
}

Другие вопросы по теме