91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

react怎樣阻止冒泡失敗

發布時間:2020-11-18 09:54:41 來源:億速云 閱讀:184 作者:小新 欄目:web開發

這篇文章主要介紹react怎樣阻止冒泡失敗,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

react阻止冒泡失敗的方法:1、在沒有涉及到原生事件注冊只有react事件時,用【e.stopPropagation()】阻止冒泡;2、需要用到【e.nativeEvent.stopImmediatePropagation()】方法。

react阻止冒泡失敗的方法:

1、在沒有涉及到原生事件注冊只有react事件時,用e.stopPropagation()阻止冒泡,代碼如下:

import React, { Component } from 'react';
import './App.css';
class App extends Component {
  handleClickTestBox = (e) => {
    console.warn('handleClickTestBox: ', e);
  }
  handleClickTestBox2 = (e) => {
    console.warn('handleClickTestBox2: ', e);
  }
  handleClickTestBox3 = (e) => {
    e.stopPropagation();
    console.warn('handleClickTestBox3: ', e);
  }
  render() {
    return (
      <div
        className="test-box"
        onClick={this.handleClickTestBox}
      >
        <div
          onClick={this.handleClickTestBox2}
        >
          <div
            onClick={this.handleClickTestBox3}
          >
          </div>
        </div>
      </div>
    );
  }
}
export default App;

2、當用document.addEventListener注冊了原生的事件后,用e.stopPropagation()是不能阻止與document之間的冒泡,這時候需要用到e.nativeEvent.stopImmediatePropagation()方法,代碼如下:

import React, { Component } from 'react';
import './App.css';
class App extends Component {
  componentDidMount() {
    document.addEventListener('click', this.handleDocumentClick, false);
  }
  handleDocumentClick = (e) => {
    console.log('handleDocumentClick: ', e);
  }
  handleClickTestBox = (e) => {
    console.warn('handleClickTestBox: ', e);
  }
  handleClickTestBox2 = (e) => {
    console.warn('handleClickTestBox2: ', e);
  }
  handleClickTestBox3 = (e) => {
    // 阻止合成事件的冒泡
    e.stopPropagation();
    // 阻止與原生事件的冒泡
    e.nativeEvent.stopImmediatePropagation();
    console.warn('handleClickTestBox3: ', e);
  }
  render() {
    return (
      <div
        className="test-box"
        onClick={this.handleClickTestBox}
      >
        <div
          onClick={this.handleClickTestBox2}
        >
          <div
            onClick={this.handleClickTestBox3}
          >
          </div>
        </div>
      </div>
    );
  }
}
export default App;

3、阻止合成事件與非合成事件(除了document)之間的冒泡,以上兩種方式都不適用,需要用到e.target判斷, 代碼如下:

import React, { Component } from 'react';
import './App.css';
class App extends Component {
  componentDidMount() {
    document.addEventListener('click', this.handleDocumentClick, false);
    document.body.addEventListener('click', this.handleBodyClick, false);
  }
  handleDocumentClick = (e) => {
    console.log('handleDocumentClick: ', e);
  }
  handleBodyClick = (e) => {
    if (e.target && e.target === document.querySelector('#inner')) {
      return;
    }
    console.log('handleBodyClick: ', e);
  }
  handleClickTestBox = (e) => {
    console.warn('handleClickTestBox: ', e);
  }
  handleClickTestBox2 = (e) => {
    console.warn('handleClickTestBox2: ', e);
  }
  handleClickTestBox3 = (e) => {
    // 阻止合成事件的冒泡
    e.stopPropagation();
    // 阻止與原生事件的冒泡
    e.nativeEvent.stopImmediatePropagation();
    console.warn('handleClickTestBox3: ', e);
  }
  render() {
    return (
      <div
        className="test-box"
        onClick={this.handleClickTestBox}
      >
        <div
          onClick={this.handleClickTestBox2}
        >
          <div
            id="inner"
            onClick={this.handleClickTestBox3}
          >
          </div>
        </div>
      </div>
    );
  }
}
export default App;

以上是react怎樣阻止冒泡失敗的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

昭苏县| 论坛| 新乡县| 大同市| 嘉善县| 龙海市| 安国市| 彰武县| 无棣县| 手机| 文水县| 罗定市| 连平县| 顺义区| 钟山县| 尤溪县| 尉氏县| 驻马店市| 宜宾县| 怀安县| 五河县| 蚌埠市| 滦平县| 西丰县| 阿拉善盟| 余江县| 荣成市| 陆河县| 祁门县| 绍兴市| 长武县| 隆昌县| 通辽市| 麟游县| 保康县| 金湖县| 交口县| 江山市| 云龙县| 长治县| 金华市|