why
在react中,有一个很重要的概念就是:合成事件。他是基于Virtual DOM 所实现的一套事件系统。我们在React中所创建的事件处理函数,都会接受一个到一个SyntheticEvent的实例。为什么要这么实现是如下的原因:
- 抹平各浏览器之间的事件差异,不存在兼容性问题,对开发者极为友好
- 合成事件利用冒泡机制,在顶层
document完成事件注册和分发,避免直接操作DOM事件,减少内存开销,简化事件处理和回收机制。 - 内部使用事件池的概念,管理合成事件的创建,回收及其复用,提升性能。
How
我们先做这样一个实验,在一个div上绑定click事件,如果不使用任何框架的话,一般会这样去定义:
通过浏览器审查工具,我们会看到,在div上绑定了一个click事件:
现在我们引入React,来实现同样的效果:
这时候,我们审查一下div的监听事件,会发现,