事件池
一句话结论:早期 React 为减少频繁分配对象,会复用 SyntheticEvent(事件池);但在较新版本的 React DOM 中事件池已逐步弱化/移除,理解它的意义主要是为了看懂旧资料与
persist的来历。
1. 事件池在解决什么
- 高频事件(mousemove/scroll)创建大量事件对象 → GC 压力大
- 复用对象:事件回调结束后清空字段,放回池中下次再用
2. 带来的副作用
- 异步访问事件对象会拿到“被清空”的字段
- 旧方案需要
event.persist()来阻止回收/清空
3. 现在怎么理解
- 面试回答:说明“曾经有池化、为什么要池化、池化的问题、现在的演进”
- 业务实践:不要长期持有事件对象,必要时提前解构你需要的数据