各位好,欢迎来到今天的“React 内部原理深度解剖”研讨会。我是你们的讲师,一个在 React 事件池子里摸爬滚打多年的老司机。 今天我们不聊组件生命周期,不聊 Hooks,也不聊 Redux。我们聊点更刺激的——React 事件系统的“鬼故事”。 具体来说,我们要讨论的是那个曾经让无数 React 初学者半夜惊醒、让资深工程师对着屏幕抓狂的神秘方法——e.persist()。特别是,我们要搞清楚,在 React 15 的那个旧时代,这个方法是如何像幽灵一样潜入你的代码,又是如何随着 React 16 的到来彻底销声匿迹的。 来,把你们的咖啡端起来。准备好了吗?我们开始。 第一部分:幽灵的起源——为什么 React 要搞个“事件池”? 首先,我们要回到那个“遥远的过去”。也就是 React 15 甚至更早的年代。 如果你是一个 React 老手,你可能还记得,在 React 16 引入 Fiber 架构之前,React 的核心渲染模型其实相当简单:它就是一个基于虚拟 DOM Diff 的调度器。 但问题来了。React 的事件处理,和原生 DOM 的事件处理,完全是两码事。 在原生 …