事件系统概述
一句话结论:React 事件系统用“事件委托 + 合成事件 + 插件化提取”统一浏览器差异,并把事件与 Fiber 关联起来,最终在捕获/冒泡阶段按组件树顺序触发回调。
1. 为什么不直接用原生事件
- 统一兼容:屏蔽浏览器差异
- 统一语义:同一套事件对象(SyntheticEvent)与优先级体系
- 统一调度:事件触发的更新可以映射到 React 的优先级/Lane
2. 两个关键设计
- 事件委托:在根容器注册少量监听,减少绑定数量
- 合成事件:封装原生事件,提供一致接口(并可做额外处理)
一句话结论:React 事件系统用“事件委托 + 合成事件 + 插件化提取”统一浏览器差异,并把事件与 Fiber 关联起来,最终在捕获/冒泡阶段按组件树顺序触发回调。