> 文档中心 > React的合成事件

React的合成事件

React有自己一套独立的事件系统,它和DOM原生事件系统不同。

DOM 事件

事件流:页面中绑定了很多的事件,而页面接收事件的顺序就是事件流。

事件传播大致分为三个阶段

  1. 事件捕获阶段
  2. 目标阶段
  3. 事件冒泡阶段

首先,当一个事件被触发的时候,事件会从最外层元素开始查找,一直找到目标DOM节点,这个过程就是事件捕获阶段;事件被目标元素接收后,就开始反弹,进入冒泡阶段,往外一层一层回弹。这就是事件传播的整个阶段。

React事件

合成事件是React自定义的事件对象,向开发者提供统一、稳定、并且和DOM原生事件相同的事件接口,在底层上已经处理好不同浏览器之间的差异了。

在React中大部分的事件都不会直接绑定在具体元素上,除了一些不能冒泡的事件【媒体类型的事件】。而是绑定在document上,当事件在具体的DOM上呗触发后,最终都会冒泡到document上,document上绑定的统一事件处理程序会将事件分发到具体的组件实例。

在事件分发之前,React先对事件进行包装,把原生DOM事件包装为合成事件。

如果需要访问DOM原生事件对象的时候,则可以通过e.nativeEvent,
在这里插入图片描述

React事件系统背后的动机是什么呢?

  1. 官方的说明,合成事件符合W3C规范,在底层抹平了不同浏览器之间的差异。向开发者暴露了统一、稳定的、并且和DOM原生事件相同的事件接口。让开发者不再关注底层兼容的问题,可以专注于业务逻辑的开发
  2. 自定义事件系统,让React掌握了事件处理的主动权,方便React对事件的中心化管控。

解梦吧