各位前端界的同仁,还有那些立志要摸透 React 内部黑箱的勇士们,大家好。 今天我们不聊业务,不聊架构模式,也不聊如何用 React 写出“高大上”的组件库。今天,我们要钻进 React 的腹地,去解剖它的心脏——事件系统。 你可能会问:“不就是 onClick={handleClick} 吗?有什么好解剖的?” 哼,肤浅。你以为你只是在写代码,其实你是在和浏览器原生的 DOM API 打交道,而 React 在中间充当了一个极其复杂的“翻译官”和“中间人”。这个中间人叫 SyntheticEvent,也就是我们常说的“合成事件”。 如果你想让 React 支持一个它原本不认识的事件,比如 onConfettiExplosion(恭喜你,放彩带爆炸),你以为是加一行配置就完事了?不,那是做梦。你需要改源码,而且是动刀子地改。 那么,问题来了:如果要为 React 增加一个自定义的合成事件,你需要修改源码中的哪些插件注册表?这就像是在乐高城堡里加一座新的塔楼,你得知道地基在哪里,砖块在哪里,图纸在哪里。 来,把咖啡喝好,我们开始这场源码深潜。 一、 React 事件系统的“三巨头” 在 …
继续阅读“React 事件系统设计:如果要为 React 增加一个自定义的合成事件,你需要修改源码中的哪些插件注册表?”