用途:该技能用于分析 React 组件的重渲染,找出不必要的重渲染并给出对应修复,同时说明改了什么、为什么有效。资料强调重渲染本身并非坏事,目标是消除输出与上次相同的多余渲染,且修复前后都应测量。
主要能力:提供四类定位手段——React DevTools Profiler(录制、查看火焰图与“Why did this render?”)、Highlight Updates 可视化闪烁、组件内 useRef 计数加 console.log、以及第三方 React Scan(npm install react-scan,入口调用 scan({ enabled: true, log: true }))。随后按原因分类:父组件重渲染而子组件输出不变、内联对象/数组 prop、内联函数 prop、派生值重复计算、Context 重渲染、key 不稳定、state 位置过高。
修复方式:React.memo 阻止父触发的子渲染(可自定义比较器但需谨慎);useCallback 稳定函数引用,注意依赖数组完整以免闭包过期,也可用函数式更新减少依赖;useMemo 用于稳定对象/数组引用或缓存昂贵计算,资料明确列出不必使用的场景(计算简单、值已是原始类型、依赖与渲染同频);下移 state 缩小重渲染影响范围;把稳定子树作为 children/props 传入以避免重渲染。
输出格式:要求给出重渲染审计表(组件、原因、是否必要、所用修复)、根因说明、前后代码片段、每个修复的原理说明以及验证方式。
适用场景:用户反馈 React 页面或组件变慢、需要定位并优化重渲染时。
限制与注意:资料列出反模式,包括到处 memo、useCallback/useMemo 漏依赖、对频繁变化 props 使用 React.memo、依赖中放对象/数组、跳过 profiler 直接改。Context 导致的广泛重渲染指向另一技能 context-rerenders-fix。参考文件为 references/profiling-guide.md 与 references/memoization-tradeoffs.md。具体安装与运行环境要求、版本兼容性、性能基准数据暂未提供。