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

您的位置:首頁技術(shù)文章
文章詳情頁

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

瀏覽:144日期: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’)// 這個(gè)事件綁定在一個(gè) a 標(biāo)簽上e.stopPropagation()this.setState({ spread: !this.state.spread}) }

這個(gè)功能就是一個(gè)類似淘寶頂部導(dǎo)航條的功能,只不過我這里用的是點(diǎn)擊事件。現(xiàn)在我觸發(fā)spreadHandler的時(shí)候取消了冒泡,但是document的click事件還是會(huì)觸發(fā)。不知道是因?yàn)槭录壎ㄔ?a 標(biāo)簽上,還是別的什么原因造成的,有人知道這是怎么回事嗎?

問題解答

回答1:

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

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

e.preventDeafult()

回答3:

試試這個(gè):

e.nativeEvent.stopImmediatePropagation();

react的事件機(jī)制與原生js的事件機(jī)制是有所區(qū)別的。

回答4:

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

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 国产精品黄在线观看免费 | 黄色网址免费在线 | 日朝欧美亚洲精品 | 亚洲欧美日本国产综合在线 | 中国成人在线视频 | 欧美一级棒 | 日本一级毛片片在线播放 | 日韩精品欧美激情国产一区 | 成人黄色一级片 | 欧美线在线精品观看视频 | 亚洲一区二区中文字幕 | 国产精品夜色视频一区二区 | 国产亚洲人成网站观看 | 男女男精品视频在线播放 | 在线视频三区 | 精品毛片视频 | 手机看成人免费大片 | 一本久久a久久精品亚洲 | 亚洲美女免费视频 | www.碰| 三级黄色片网站 | 精品久久一区 | 性高湖久久久久久久久 | 怡红院免费在线视频 | 久久美女精品国产精品亚洲 | 1024手机基地在线看手机 | 手机看片福利在线 | 三级特黄视频 | 亚洲小视频在线播放 | 在线视频 日韩 | 9l国产精品久久久久麻豆 | 成人免费看片 | 91久久亚洲精品一区二区 | 91精品视品在线播放 | 飘花国产午夜精品不卡 | 久久精品国产亚洲精品2020 | a站在线观看| 性视频福利在线看 | 亚洲波多野结衣日韩在线 | 爱综合| 日韩三级免费 |