国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

javascript - react 中綁定事件和阻止事件冒泡

瀏覽:108日期:2023-05-15 15:14:54

問題描述

直接上代碼吧,我是想了半天不知道哪里出問題了。

state = {spread: false } componentDidMount() {console.log(’document clicked’)document.onclick = () => { if(this.state.spread) {this.setState({ spread: false}) }} } spreadHandler (e) {console.log(’target clicked’)// 這個事件綁定在一個 a 標簽上e.stopPropagation()this.setState({ spread: !this.state.spread}) }

這個功能就是一個類似淘寶頂部導航條的功能,只不過我這里用的是點擊事件。現在我觸發spreadHandler的時候取消了冒泡,但是document的click事件還是會觸發。不知道是因為事件綁定在 a 標簽上,還是別的什么原因造成的,有人知道這是怎么回事嗎?

問題解答

回答1:

react 的合成事件中的阻止冒泡, 是無法取消原生事件冒泡的.原生事件中阻止冒泡行為, 反而可以阻止 react 合成事件中的冒泡.所以應該盡量避免混用, 非用不可的話, 可以在 document 的事件處理程序中加一層判斷.

document.addEventListener(’click’, function(e){ // 類似事件委托, 判斷一下發生事件的元素. if( e.target.nodeName.toLowerCase() === ’a’ ) {return; }}, false);回答2:

e.preventDeafult()

回答3:

試試這個:

e.nativeEvent.stopImmediatePropagation();

react的事件機制與原生js的事件機制是有所區別的。

回答4:

react的合成事件都是通過綁定在document上click的事件代理實現的,所以無法通過阻止合成事件冒泡(已將冒到document上了)來阻止docuemnt上的其他事件處理,所以得用原生事件

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 成年人在线视频免费观看 | 九九精品免视看国产成人 | s8国产成人精品视频 | 日本一级特黄毛片高清视频 | 国产精品特黄一级国产大片 | 国产精品久久久久9999小说 | 狠狠色狠狠综合久久 | 亚洲深夜 | 成人中文字幕在线 | 欧美一线不卡在线播放 | 亚洲一区二区三 | 久久亚洲欧美成人精品 | caoporen国产91在线| 天堂视频免费看 | 欧美一级大黄特黄毛片视频 | 国产v在线播放 | 日本爽快片100色毛片 | 成人免费网址在线 | 精品免费久久久久久久 | 日韩欧美中文字幕在线观看 | 日韩视频网 | 91aaa免费免费国产在线观看 | 男女男精品视频免费观看 | 99精品网站 | 日韩中文字 | 一区二区三区免费视频网站 | 亚洲爽爽| 久久15| 中国女人真人一级毛片 | 国产成人偷拍 | 国产精品亚欧美一区二区三区 | 日本在线观看www免费 | 91久久精一区二区三区大全 | 成人a免费视频播放 | 欧洲成人全免费视频网站 | 成年女人免费看片 | 高清国产一级精品毛片基地 | 精品在线观看免费 | 亚洲精品专区一区二区欧美 | 亚洲va久久久噜噜噜久久狠狠 | 日韩国产欧美精品综合二区 |