Javascript 如何停止事件向React组件中的全局侦听器的传播?

Javascript 如何停止事件向React组件中的全局侦听器的传播?,javascript,reactjs,dom,event-handling,event-delegation,Javascript,Reactjs,Dom,Event Handling,Event Delegation,我有一个组件,可以监听我页面上的所有mousedown事件 document.addEventListener('mousedown',listener) 现在让我们假设我的React应用程序中有一个按钮 <button onMouseDown={e => e.stopPropagation()} onClick={e => doSomething()} /> e.stopPropagation()} onClick={e=>doSomething()}

我有一个组件,可以监听我页面上的所有mousedown事件

document.addEventListener('mousedown',listener)

现在让我们假设我的React应用程序中有一个按钮

<button 
  onMouseDown={e => e.stopPropagation()}
  onClick={e => doSomething()}
/>  
e.stopPropagation()}
onClick={e=>doSomething()}
/>  
使用
onMouseDown={e=>e.stopPropagation()}
不会阻止触发我的全局mousedown侦听器,因为React使用事件委托(我想是吧?)

使其工作的唯一方法是调用
onMouseDown={e=>e.nativeEvent.stopImmediatePropagation()}

从开发人员的角度来看,有什么方法可以使这更自然?我的意思是,要向大型团队中的每个人解释为什么常规的e.stopPropagation()不起作用,事件委派是如何工作的,等等,不是很方便

那么,在调用
e.stopPropagation()
时,我能做些什么,使它实际上不会触发我的主mousedown侦听器

从我的侦听器中,是否有一种受支持的方法来过滤调用了
stopPropagation
的事件(通过React或not?)


是否有方法更改处理委派事件的节点?(这里似乎是
document

您看到这个问题了吗-?是的,它只是解释了事件委派是如何工作的,但没有为我的问题提供解决方案。我还想知道在React中使用事件到文档的最佳实践是什么