
8.6 未捕获错误的监控
前端错误有三类来源——React 渲染错误(用 ErrorBoundary)、全局 JS 运行时错误(window.onerror / error 事件)、未处理的 Promise 拒绝(unhandledrejection);三者都要接上,并做「去重、采样、源码映射、上下文补充、可靠上报」。

前端错误有三类来源——React 渲染错误(用 ErrorBoundary)、全局 JS 运行时错误(window.onerror / error 事件)、未处理的 Promise 拒绝(unhandledrejection);三者都要接上,并做「去重、采样、源码映射、上下文补充、可靠上报」。

StrictMode 在开发环境故意「双调用组件函数」与「Effect 挂载 → 卸载 → 再挂载」——目的是暴露「渲染不纯」与「清理缺失」,是并发渲染对代码的硬性要求,不是 bug。

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

Suspense 的语义是「在等待某件事完成时显示 fallback」——目前最常用于「懒加载(lazy)」,同时是「并发渲染 + 流式 SSR + React 19 的 use」的基础设施。

Error Boundary 是 React 的「组件级错误边界」——它捕获子树在渲染过程中抛出的错误,显示降级 UI 而不是让整个应用白屏;只能用类组件实现(因为需要 componentDidCatch)。

凡是「建立了某样东西」的 Effect,都必须「撤销它」——事件监听、定时器、订阅、Observer、第三方实例、请求、全局样式,漏掉任何一个都会导致重复回调、内存泄漏或状态错乱。

useEffect 的语义是「把组件与某个外部系统同步」——能不用就不用;派生数据直接算、事件逻辑写在事件处理里、重置状态用 key,只有「真的在与外部系统同步」时才用 Effect。

实时通信的难点不在『怎么建立连接』,而在『连接断了怎么办』——所以核心是「重连退避 + 心跳探活 + 断线补偿(用序号补发缺失消息)+ 多标签页只留一个连接」这四件事,而选型上「SSE 常被低估、WebSocket 常被过度使用」。

请求层可观测性要回答「这次请求为什么慢/为什么失败、影响多大、是谁的问题」——所以必须做到三件事:把耗时拆成可归因的几段、把错误分类并带上上下文、用 traceparent 把前端与后端串成一条链路。

离线优先的本质是「把『本地数据库』当成唯一读写入口,把『网络同步』当成后台异步过程」——所以真正要设计的不是「缓存」,而是「队列的可靠性(重试、顺序、幂等、死信)、冲突解决、以及同步状态的可见性」。

tRPC 的卖点是「端到端类型安全,且零额外定义」——你只写一次服务端函数(含 zod 输入校验),客户端直接 import 那个类型就有了完整的自动补全与类型检查,既不需要 schema 文件,也不需要 codegen;代价是「只在 TypeScript 全家桶同仓时成立」。
最新评论
读过书不知道欧·亨利的人少。教科书上选文有
这小生活不错呀
不错,必须顶一下!
看着你还在坚持,很好
看来忙了也没时间更新博客了
NIce。学习了。。。。
网站不错!!!!
简洁实用,好文章!