
12.10 为什么要合成事件
合成事件(SyntheticEvent)是 React 自己实现的一套跨浏览器一致的事件系统——它把事件统一委托到根容器,既解决了「浏览器差异」,又带来「性能与调度」上的好处;React 17 起委托目标从 document 改为根容器。

合成事件(SyntheticEvent)是 React 自己实现的一套跨浏览器一致的事件系统——它把事件统一委托到根容器,既解决了「浏览器差异」,又带来「性能与调度」上的好处;React 17 起委托目标从 document 改为根容器。

读完《卡拉马佐夫兄弟》的那个深夜,我合上书,却觉得有什么东西在胸腔里继续翻涌,久久不能平息。它不像一部小说结束时的满足,更像一场风暴过后,你站在废墟上,发现连自己的影子都被重新描画过。陀思妥耶夫斯基没有给我任何答案,却逼着我直面那些我一直绕...

压缩、裁剪、加水印、抠图、拼接都在本地完成。不限张数、不限次数,图片不会传到服务器。

React 是「运行时 diff + 手动/编译器记忆化 + 不可变数据」,Vue 是「编译时优化 + 细粒度响应式 + 可变数据」——两者不是「谁更快」,而是「不同的取舍」。

因为 Context 的订阅粒度是整个 value(而不是「value 里的某个字段」),且它的更新直接通知消费者、不经过 props 比较——所以 React.memo 也拦不住。

有用,但只在三个场景——「配合 React.memo 稳定 props 引用」「计算确实昂贵」「作为其它 Hook 的依赖」;其余情况是负担(比较依赖 + 保存缓存 + 维护成本),所以标准答案是「先测量,再优化」。

看「是否需要实时响应输入」——需要(实时校验、格式化、联动)就用受控;只需要「提交时的最终值」、字段很多、或集成非 React 控件就用非受控。

React 用三个假设——「只做同层比较」「type 不同直接重建」「用 key 标识同层元素」——把「树的最小编辑距离」的理论复杂度 O(n³) 降到了 O(n),代价是放弃「跨层复用」。

key 是 React 用来判断「新旧列表中的元素是否是同一个」的身份标识——它决定组件是「复用」(保留 DOM 与状态)还是「重建」(状态丢失);用 index 会在列表增删排序时造成状态错位。

两者唯一的区别是执行时机——useLayoutEffect 在「DOM 更新后、浏览器绘制前」同步执行(会阻塞绘制),useEffect 在「绘制后」异步执行;需要「测量 DOM 并立即修正以防闪烁」时用前者。

setState 的「调用」是同步的,「应用更新并重新渲染」是批处理延后的——所以事件处理里读不到新值;React 18 起所有场景都自动批处理(不再有「异步回调里同步渲染」的例外)。
最新评论
读过书不知道欧·亨利的人少。教科书上选文有
这小生活不错呀
不错,必须顶一下!
看着你还在坚持,很好
看来忙了也没时间更新博客了
NIce。学习了。。。。
网站不错!!!!
简洁实用,好文章!