用途:为 React 应用性能优化提供专家级指导,通过记忆化、代码分割、虚拟化与高效渲染策略提升性能。适用于优化渲染缓慢的组件、减小包体积、改善大型列表或数据表格的响应、防止复杂组件树中的不必要重渲染、优化状态管理以减少渲染级联、用代码分割改善感知性能,以及借助 React DevTools Profiler 排查性能问题。
主要能力与快速参考:提供 React.memo、useMemo、useCallback 模式;lazy/Suspense 代码分割与包优化;react-window 大型列表虚拟化;状态管理策略与 context 拆分;useTransition、useDeferredValue(React 18+)等并发特性;React DevTools Profiler 性能监控;常见陷阱与反模式。资料中给出的参考文件路径包括 skills/react-performance-optimization/references/memoization.md、code-splitting.md、virtualization.md、state-management.md、concurrent-features.md、profiling-debugging.md、common-pitfalls.md。
使用方式与工作流:先定位瓶颈——用 React DevTools Profiler 记录交互并分析火焰图,找出慢渲染组件、不必要重渲染、每次渲染都执行的昂贵计算。再做针对性优化——对不必要重渲染使用 React.memo、useCallback 并检查 props 中的内联对象或数组;对昂贵计算使用 useMemo 或把计算移出渲染;对大型列表使用 react-window 并确保使用唯一 key;对初始加载慢使用 React.lazy 代码分割、webpack-bundle-analyzer 分析包体积、对重依赖使用动态导入。最后验证改进——重新记录 Profiler 会话,比较前后指标。
常见模式包括:用 memo 包裹昂贵组件、用 useMemo 缓存计算值、用 useCallback 提供稳定函数引用、按路由代码分割、用 react-window 的 FixedSizeList 虚拟化长列表。
限制与注意事项:应先分析再优化,避免过早优化,不要对简单快速组件做记忆化;内联对象或数组会破坏记忆化;遗漏依赖会造成闭包过期;用索引作 key 会在列表顺序变化时破坏协调;单一大型 context 会导致广泛重渲染;不进行性能分析就优化会浪费时间。资料提及的参考还包括 React 文档的性能页面、React DevTools 扩展、react-window 仓库、webpack-bundle-analyzer、rollup-plugin-visualizer 和 Lighthouse,但未提供安装命令、收费与平台支持等细节。