React合成事件是什么?
React 合成事件是 React 模拟原生 DOM 事件所有能力的一个事件对象,即浏览器原生事件的跨浏览器包装器。它根据 W3C 规范 来定义合成事件,兼容所有浏览器,拥有与浏览器原生事件相同的接口。
为什么会有合成事件?
- 将事件绑定在
document - v16
/容器元素 - v17
统一管理,防止很多事件直接绑定在原生的dom
元素上。造成一些不可控的情况(对事件进行归类,可以在事件产生的任务上包含不同的优先级) React
想实现一个全浏览器的框架, 为了实现这种目标就需要提供全浏览器一致性的事件系统,以此抹平不同浏览器的差异(提供合成事件对象,抹平浏览器的兼容性差异)
合成事件原理 ?
React并不是将click事件绑在该div的真实DOM上,而是在document处监听所有支持的事件,当事件发生并冒泡至document处时,React将事件内容封装并交由真正的处理函数运行。
合成事件总结:
- 合成事件的监听器是统一注册在document上的,且仅有冒泡阶段。所以原生事件的监听器响应总是比合成事件的监听器早
- 阻止原生事件的冒泡后,会阻止合成事件的监听器执行