При щелчке внутри блока запускается внешний щелчок

#reactjs

#reactjs

Вопрос:

Могу ли я при нажатии на внутренний щелчок сделать так, чтобы верхний щелчок не работал? введите описание изображения здесьУ меня есть всплывающее окно, которое находится внутри блока при щелчке, по которому оно открывается. Поэтому мне нужно реализовать эту логику, чтобы закрыть его.

 import React, {Component} from 'react';

class Test extends Component {

  onClick() {
    console.log(111)
    // I need when click onClick1 this not trigger
    // open popup
  }

  onClick1() {
    console.log(222)

    // close popup
  }

  render() {
    return (
      <div>
        <div onClick={this.onClick.bind(this)}>

          tatatata
          <div onClick={this.onClick1.bind(this)}>vavavavava</div>

        </div>
      </div>
    );
  }
}

export default Test;
  

Ответ №1:

Вы можете использовать stopPropagation метод для события onClick1 , переданного обработчику события, чтобы остановить его передачу другим элементам.

 class Test extends React.Component {
  onClick() {
    console.log(111);
  }

  onClick1(event) {
    event.stopPropagation();
    console.log(222);
  }

  render() {
    return (
      <div>
        <div onClick={this.onClick.bind(this)}>
          tatatata
          <div onClick={this.onClick1.bind(this)}>vavavavava</div>
        </div>
      </div>
    );
  }
}

ReactDOM.render(<Test />, document.getElementById("root"));  
 <script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>

<div id="root"></div>