我有一个应该监听我页面上所有mousedown事件的组件
document.addEventListener('mousedown', listener)
现在让我们假设我的React应用程序中有一个按钮
<button
onMouseDown={e => e.stopPropagation()}
onClick={e => doSomething()}
/>
使用onMouseDown={e => e.stopPropagation()}
不会阻止我的全局mousedown侦听器被触发,因为React使用事件委托(我想?)
使其运作的唯一方法是致电onMouseDown={e => e.nativeEvent.stopImmediatePropagation()}
从开发人员的角度来看,有没有办法让这更自然?我的意思是,向大型团队的每个人解释为什么常规e.stopPropagation()不起作用,事件委托如何工作等等都不是很方便......
那么,有什么我可以做的,以致在调用e.stopPropagation()
时它实际上不会触发我的主要mousedown监听器吗?
是否有支持的方式,从我的监听器,过滤调用stopPropagation
的事件(通过React或不是?)
有没有办法更改React处理委托事件的节点? (这里好像是document
)