React合成事件的原理是什么
导读:本文共4288字符,通常情况下阅读需要14分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 事件介绍什么是事件?事件是在编程时系统内发生的动作或者发生的事情,而开发者可以某种方式对事件做出回应,而这里有几个先决条件事件对象给事件对象注册事件,当事件被触发后需要做什么事件触发举个栗子在机场等待检票,听到广播后排队检票事件对象,也就是检票事件事件注册/监听,也就是我们在机场等待的时候事件触发,广播响起开始检票事件触发之后的回调,我们开始排队...代码实现/... ...
目录
(为您整理了一些要点),点击可以直达。事件是在编程时系统内发生的动作或者发生的事情,而开发者可以某种方式对事件做出回应,而这里有几个先决条件
事件对象
给事件对象注册事件,当事件被触发后需要做什么
事件触发
在机场等待检票,听到广播后排队检票
事件对象,也就是检票事件
事件注册/监听,也就是我们在机场等待的时候
事件触发,广播响起开始检票
事件触发之后的回调,我们开始排队...
不是浏览器本身触发的事件,自己创建和触发的事件。
React 事件的命名采用小驼峰式(camelCase),而不是纯小写。
使用 JSX 语法时你需要传入一个函数作为事件处理函数,而不是一个字符串。
对事件进行归类,可以在事件产生的任务上包含不同的优先级
提供合成事件对象,抹平浏览器的兼容性差异
提供了一种“顶层注册,事件收集,统一触发”的事件机制
“顶层注册”,其实是在root元素上绑定一个统一的事件处理函数
“事件收集”, 事件触发时(实际上是root上的事件处理函数被执行),构造合成事件对象,按照冒泡或捕获的路径去组件中收集真正的事件处理函数
“统一触发”,在收集过程之后,对收集的事件逐一执行,并共享同一个合成事件对象
时机:在fiber
节点进入render
阶段的complete
阶段时,名为onClick的props会被识别为事件进行处理
调用ensureListeningTo
进行事件绑定
然后调用DOMPluginEventSystem.js中的addTrappedEventListener
进行事件注册,而监听器listener是React通过createEventListenerWrapperWithPriority
创建出优先级不同的时间监听包装器
总的来说,会有三种事件监听包装器:
dispatchDiscreteEvent: 处理离散事件
dispatchUserBlockingUpdate:处理用户阻塞事件
dispatchEvent:处理连续事件
负责以不同的优先级权重来触发真正的事件流程
在createEventListenerWrapperWithPriority
中,根据eventPriority
事件优先级不同调用事件dispatchDiscreteEvent
、dispatchUserBlockingUpdate
、dispatchUserBlockingUpdate
、dispatchEvent
进行事件绑定
在每一个事件绑定函数中,会调用dispatchEventsForPlugins
函数
合成事件,放入dispatchQueue中
而dispatchQueue由两部分组成
合成事件对象
多个listeners(可以共用一个合成事件对象)
执行事件执行路径下的事件,从dispatchQueue
中取出事件对象events
和具体执行路径listeners
,然后遍历执行
原理:收集的事件放在dispatchQueue
数组中,而冒泡和捕获的区别在于执行时机和顺序,那么我们只需要对数组按照不同顺序循环执行即可
React合成事件的原理是什么的详细内容,希望对您有所帮助,信息来源于网络。