react 的事件系统
1. 单个类型的事件只会绑定一次,全部代理到 document 上;
2. 事件触发时,获取target(dom),由于dom在创建的时候,react已经做了dom和fiber的映射,故而可以获取fiber;
3. react基于浏览器原生的事件对象封装了自己的事件对象;
4. 为了减小释放和新建对象的开销, 事件对象会扔进一个pool里,在事件结束时,将属性都置为null
5. e.persist()
6. 向上遍历fiber,取出所有祖先fiber的同类型的事件回调,根据捕获,冒泡的顺序执行;
7. react的冒泡是自己实现的冒泡,其实原理也很简单,就是在遍历执行回调的时候,都会判断一个变量(这个变量随着e.stopPropagation()执行会更改),然后break数组的遍历;
8. e.nativeEvent.stopPropagation()