React合成事件的原理是什么(react,开发技术)

时间:2024-05-09 08:31:36 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    React%E5%90%88%E6%88%90%E4%BA%8B%E4%BB%B6%E7%9A%84%E5%8E%9F%E7%90%86%E6%98%AF%E4%BB%80%E4%B9%88

事件是在编程时系统内发生的动作或者发生的事情,而开发者可以某种方式对事件做出回应,而这里有几个先决条件

事件对象

给事件对象注册事件,当事件被触发后需要做什么

事件触发

在机场等待检票,听到广播后排队检票

事件对象,也就是检票事件

事件注册/监听,也就是我们在机场等待的时候

事件触发,广播响起开始检票

事件触发之后的回调,我们开始排队...

不是浏览器本身触发的事件,自己创建和触发的事件。

React 事件的命名采用小驼峰式(camelCase),而不是纯小写。

使用 JSX 语法时你需要传入一个函数作为事件处理函数,而不是一个字符串。

对事件进行归类,可以在事件产生的任务上包含不同的优先级

提供合成事件对象,抹平浏览器的兼容性差异

提供了一种“顶层注册,事件收集,统一触发”的事件机制

“顶层注册”,其实是在root元素上绑定一个统一的事件处理函数

“事件收集”, 事件触发时(实际上是root上的事件处理函数被执行),构造合成事件对象,按照冒泡或捕获的路径去组件中收集真正的事件处理函数

“统一触发”,在收集过程之后,对收集的事件逐一执行,并共享同一个合成事件对象

时机:在fiber节点进入render阶段的complete阶段时,名为onClick的props会被识别为事件进行处理

调用ensureListeningTo进行事件绑定

然后调用DOMPluginEventSystem.js中的addTrappedEventListener进行事件注册,而监听器listener是React通过createEventListenerWrapperWithPriority创建出优先级不同的时间监听包装器

总的来说,会有三种事件监听包装器:

dispatchDiscreteEvent: 处理离散事件

dispatchUserBlockingUpdate:处理用户阻塞事件

dispatchEvent:处理连续事件

负责以不同的优先级权重来触发真正的事件流程

createEventListenerWrapperWithPriority中,根据eventPriority事件优先级不同调用事件dispatchDiscreteEventdispatchUserBlockingUpdatedispatchUserBlockingUpdatedispatchEvent进行事件绑定

在每一个事件绑定函数中,会调用dispatchEventsForPlugins函数

合成事件,放入dispatchQueue中

而dispatchQueue由两部分组成

合成事件对象

多个listeners(可以共用一个合成事件对象)

执行事件执行路径下的事件,从dispatchQueue中取出事件对象events和具体执行路径listeners,然后遍历执行

原理:收集的事件放在dispatchQueue数组中,而冒泡和捕获的区别在于执行时机和顺序,那么我们只需要对数组按照不同顺序循环执行即可

本文:React合成事件的原理是什么的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:python中内置函数ord()返回字符串的ASCII数值是什么下一篇:

5 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18