React 事件机制
DOM 事件
冒泡和捕获

先从父元素向下传递捕获,直到子元素处理掉,然后再逐个冒泡。
所以有了一个事件委托的机制。
React 事件
React 会将所有事件都绑定在 document 上。
统一使用事件监听。都是在冒泡阶段处理。
所以一般在组件挂载的时候增加监听事件。
组件卸载的时候删除监听事件。
事件触发的时候,组件会生成一个合成事件。然后发送到 document 上。
document 会通过 dispatch event 回调函数依次执行 dispatch listener 中同类型事件的监听函数。
事件注册是在组件生成的时候,将 VDOM 中的所有的事件对应的原生事件都注册在 Document 中一个监听器中。所有的事件处理函数都存放在 listenerbank 中,并以 key 做为索引。(将可能要触发的事件分门别类)
- 是合成事件,不是 DOM 原生事件
- 在 document 监听所有支持事件
- 使用统一的分发函数 dispatchEvent 来指定事件函数的执行