1 React合成事件特点
React自己实现了一套高效的事件注册,存储,分发和重用逻辑,在DOM事件体系基础上做了很大改进,减少了内存消耗,简化了事件逻辑,并最大化的解决了IE等浏览器的不兼容问题。与DOM事件体系相比,它有如下特点
- React组件上声明的事件最终绑定到了document这个DOM节点上,而不是React组件对应的DOM节点。故只有document这个节点上面才绑定了DOM原生事件,其他节点没有绑定事件。这样简化了DOM原生事件,减少了内存开销
- React以队列的方式,从触发事件的组件向父组件回溯,调用它们在JSX中声明的callback。也就是React自身实现了一套事件冒泡机制。我们没办法用event.stopPropagation()来停止事件传播,应该使用event.preventDefault()
- React有一套自己的合成事件SyntheticEvent,不同类型的事件会构造不同的SyntheticEvent
- React使用对象池来管理合成事件对象的创建和销毁,这样减少了垃圾的生成和新对象内存的分配,大大提高了性能
那么这些特性是如何实现的呢,下面和大家一起一探究竟。
2 React事件系统
先看Facebook给出的React事件系统框图

浏览器事件(如用户点击了某个button)触发后,DOM将
本文深入解析React的合成事件系统,包括事件注册在document节点、事件分发与callback调用机制,以及如何通过SyntheticEvent优化性能。通过对React事件源码的分析,阐述了React事件系统的内存效率和兼容性优势。
订阅专栏 解锁全文
2万+

被折叠的 条评论
为什么被折叠?



