美文网首页
React 18 源码学习笔记 2 addEventListen

React 18 源码学习笔记 2 addEventListen

作者: 吴摩西 | 来源:发表于2022-08-22 20:55 被阅读0次

再次的,React 在 createRoot 时给传递的参数 (即 React 渲染的根结点) 挂载各种事件监听。


Screen Shot 2022-08-22 at 8.24.44 PM.png

React 将事件监听主要分为三种等级,有三种响应函数

  1. dispatchDiscreteEvent,离散事件,例如 click, select, keyup, touchstart
  2. dispatchContinuousEvent, 连续事件,例如 drag, dragover, scroll, pointermove, touchmove
  3. dispatchEvent,其他事件,例如 abort

除此之外,还有其他接受 message 的事件。例如 IdleEventPriority

dispatchDiscreteEventdispatchContinuousEvent 最终还是会调用 dispatchEvent,从 dispatchEvent 到在 react element 上定义的响应函数 (例如: onClick),还有一定的调用栈。

Screen Shot 2022-08-22 at 8.45.30 PM.png

生成的事件如下:


Screen Shot 2022-08-22 at 8.47.08 PM.png

需要注意的是,收到的还是SyntheticBaseEvent,即还是合成事件,

  1. 此事件的 currentTarget 指向事件响应函数挂载的 DOM, target 指向触发事件的元素。
  2. 事件中的 nativeEvent 才是原始的事件 PointerEvent,在 PointerEvent 中, currentTarget 指向 React Dom 的根元素。
  3. 合成事件会在事件响应以后被清除 currentTarget. 从 MDN 可知,这是这也是 DOM 的行为,并非是 React 特异为止。

相关文章

网友评论

      本文标题:React 18 源码学习笔记 2 addEventListen

      本文链接:https://www.haomeiwen.com/subject/tazigrtx.html