欢迎在下方发表您的优质见解
Activity
Genzhen commentedon Jun 23, 2020
React并不是将click事件绑在该div的真实DOM上,而是在document处监听所有支持的事件,当事件发生并冒泡至document处时,React将事件内容封装并交由真正的处理函数运行。这样的方式不仅减少了内存消耗,还能在组件挂载销毁时统一订阅和移除事件。

另外冒泡到 document 上的事件也不是原生浏览器事件,而是 React 自己实现的合成事件(SyntheticEvent)。因此我们如果不想要事件冒泡的话,调用 event.stopPropagation 是无效的,而应该调用 event.preventDefault。
Genzhen commentedon Jun 23, 2020
1)事件注册
2)事件存储
3)事件触发执行
这里的事件执行利用了React的批处理机制
代码示例
4)合成事件
5)总流程
fengmiaosen commentedon Jul 19, 2020
很详细
zjg910723 commentedon Apr 26, 2021
如果遇到了事件冒泡的节点,是不是render的时候就不会更新事件冒泡以上的父组件,还是说更新组件更props的变更有关
CaiYifei commentedon Jun 29, 2021
这一块的判断是不是写错了?跟“如果阻止了冒泡,停止遍历,否则通过executeDispatch执行合成事件。”这个相反
lazybonee commentedon Feb 12, 2022
另外冒泡到 document 上的事件也不是原生浏览器事件,而是 React 自己实现的合成事件(SyntheticEvent)。因此我们如果不想要事件冒泡的话,调用 event.stopPropagation 是无效的,而应该调用 event.preventDefault。
这里是不是有问题的? https://codesandbox.io/s/withered-snow-3dq39?file=/src/App.js 在这个例子中调用了event.preventDefault,但并未阻止冒泡