React onClick阻止冒泡事件对addEventListener无效
1、首先想到的
为了实现点某个dom以外的其他位置隐藏该dom,而在该dom范围内的事件又不影响状态,于是乎使用了addEventListener
js
document.addEventListener('click', (e: MouseEvent) => {
console.log('应该关闭它')
setShowForm(false)
})
然后开开心心的在onClick调用方法中写道
console.log('应该没事')
e.stopPropagation()
console:
应该没事
应该关闭它
???what the hell
2、找到问题
突然想起以前使用vue时的@click.native,再去read read文档
https://zh-hans.reactjs.org/docs/events.html,e是一个合成事件,某种层度上相当与JQuery获取的dom和selector获取的dom,直接stopPropagation只能阻止合成事件冒泡问题
js
e.nativeEvent.stopImmediatePropagation()
真香(平时得多读读文档,所谓的三天不练手生)