React

原理

事件原理

问题?

  1. React 为什么要有自己的事件系统?
  2. 什么是合成事件?
  3. 如何实现批量更新?
  4. 事件系统如何模拟冒泡和捕获阶段?
  5. 如何通过 dom 元素找到与之匹配的 fiber?
  6. 为什么不能用 return false 来阻止事件的默认行为?
  7. 事件绑定在真实 dom 上吗?如不是绑定在哪里?
  8. v17 对事件系统有哪些改变?

为什么React要有一套自己的事件系统呢?

  1. 对于不同的浏览器,对事件存在不同的兼容性,React想实现一个兼容全浏览器的框架。为了实现这个目标就需要创建一个兼容全浏览器的事件系统,以此抹平不同浏览器的差异。
  2. 事件系统的处理逻辑都在底层处理了,这对后期的ssr和跨端支持度很高。

合成事件

React应用中,元素绑定的事件并不是原生事件,而是React合成的事件,比如onClick是由click合成,onChange是由blurchangefocus等多个事件合成。

参考阅读