根节点事件绑定
一句话结论:React 把大量事件监听集中绑定在根容器(而不是每个节点),通过事件冒泡定位到目标 Fiber,再按组件树路径收集并执行回调;React 17 起事件委托从 document 下沉到 root 容器。
1. 为什么要绑定在根节点
- 减少监听器数量与内存占用
- 新增/删除组件不需要反复 add/remove 原生监听器
2. 捕获与冒泡怎么支持
- 在根上分别绑定 capture/bubble 版本的监听
- 分发时按“捕获从外到内、冒泡从内到外”的顺序执行
3. React 17 的变化(常见面试点)
- 事件委托从
document迁移到 root 容器 - 目的:多 root 共存更隔离,减少与非 React 代码互相影响