React onClick阻止冒泡事件对addEventListener无效

637#f2cbe56f

在设计一个组件时,发现react的onClick调用的方法里使用e.stopPropagation()不能阻止document.addEventListener('click')事件,查了下文档发现问题..

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()

真香(平时得多读读文档,所谓的三天不练手生)

参与本文讨论

请先登录 GitHub 后留言

0/500

本文留言

0

这篇文章还没有留言,来写第一条吧。

1 / 1