陌上人如玉
公子世无双

08-副作用与错误处理

React 副作用与错误处理:useEffect 清理、Error Boundary、Suspense 异步边界、StrictMode 双调用、前端错误监控、埋点体系、灰度发布与 Web Worker。
8.10 Web Worker / SharedWorker / OffscreenCanvas-陌上寒

8.10 Web Worker / SharedWorker / OffscreenCanvas

Worker 的价值是「把 CPU 密集的工作从主线程搬走」——它直接改善 INP(交互延迟) 与「动画流畅度」;真正的工程难点是「通信成本(结构化克隆)、生命周期(池化复用)、以及构建打包」这三件事。

赞(0)陌上寒陌上寒阅读()去评论
8.9 Feature Flag 与灰度-陌上寒

8.9 Feature Flag 与灰度

Feature Flag 的价值是「把『发布代码』与『放出功能』解耦」——所以它的核心不是「一个开关」,而是「一致的灰度分桶(同一用户稳定在同组)+ 本地快速求值 + 拉取失败时的兜底 + A/B 的曝光记录」,而最大的风险是「开关变技术债」。

赞(0)陌上寒陌上寒阅读()去评论
8.8 埋点体系-陌上寒

8.8 埋点体系

埋点最难的不是「怎么发一条数据」,而是「发得对(事件与属性有规范)、发得准(曝光判定与去重)、发得全(不漏)、发得不重(不重复)、丢得起(上报失败可重试)、合规(不采集隐私)」——所以埋点是一个「数据采集系统」,而不是「一个 track 函数」。

赞(0)陌上寒陌上寒阅读()去评论
8.7 前端错误监控与可观测性-陌上寒

8.7 前端错误监控与可观测性

前端错误监控的核心是「把『压缩后的一行报错』还原成『能定位到源码的行为链路』」——所以四件事缺一不可:全局捕获(含跨域脚本)→ Sourcemap 还原 → 指纹分组去重 → 面包屑/上下文(用户当时在干什么)。

赞(0)陌上寒陌上寒阅读()去评论
8.6 未捕获错误的监控-陌上寒

8.6 未捕获错误的监控

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

赞(0)陌上寒陌上寒阅读()去评论
8.5 StrictMode 的双调用-陌上寒

8.5 StrictMode 的双调用

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

赞(0)陌上寒陌上寒阅读()去评论
8.4 Suspense 与异步边界-陌上寒

8.4 Suspense 与异步边界

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

赞(0)陌上寒陌上寒阅读()去评论
8.3 Error Boundary-陌上寒

8.3 Error Boundary

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

赞(0)陌上寒陌上寒阅读()去评论
8.2 副作用的清理-陌上寒

8.2 副作用的清理

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

赞(0)陌上寒陌上寒阅读()去评论
8.1 useEffect 的正确使用-陌上寒

8.1 useEffect 的正确使用

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

赞(0)陌上寒陌上寒阅读()去评论