欢迎在下方发表您的优质见解
React并不是将click事件绑在该div的真实DOM上,而是在document处监听所有支持的事件,当事件发生并冒泡至document处时,React将事件内容封装并交由真正的处理函数运行。这样的方式不仅减少了内存消耗,还能在组件挂载销毁时统一订阅和移除事件。
另外冒泡到 document 上的事件也不是原生浏览器事件,而是 React 自己实现的合成事件(SyntheticEvent)。因此我们如果不想要事件冒泡的话,调用 event.stopPropagation 是无效的,而应该调用 event.preventDefault。

1)事件注册

2)事件存储

{
onClick:{
nodeid1:()=>{...}
nodeid2:()=>{...}
},
onChange:{
nodeid3:()=>{...}
nodeid4:()=>{...}
}
}
3)事件触发执行

代码示例
<div onClick={this.parentClick} ref={ref => this.parent = ref}>
<div onClick={this.childClick} ref={ref => this.child = ref}>
test
</div>
</div>
4)合成事件

5)总流程

很详细
如果遇到了事件冒泡的节点,是不是render的时候就不会更新事件冒泡以上的父组件,还是说更新组件更props的变更有关
Most helpful comment
1)事件注册
2)事件存储
3)事件触发执行
这里的事件执行利用了React的批处理机制
代码示例
4)合成事件
5)总流程