Lazy loaded image
React 性能优化总结
字数 690阅读时长 2 分钟
2022-12-18
2025-5-10
type
status
date
slug
summary
tags
category
icon
password

React 性能优化总结

React 是一个强大的 UI 库,但在构建复杂应用时,性能问题可能会悄悄出现。本文将系统性地总结 React 性能优化的常见手段和最佳实践,帮助你打造更加流畅高效的前端应用。

一、使用 React.memo 避免不必要的重新渲染

React.memo 是一个高阶组件,用于缓存函数组件的渲染结果。只有当 props 改变时组件才会重新渲染。

注意事项

  • 对于复杂 props(对象、数组、函数),应结合 useCallback / useMemo 避免引用变化导致重新渲染。

二、使用 useCallback 和 useMemo

useCallback

缓存函数引用,避免子组件因 props 变化重新渲染。

useMemo

缓存计算结果,避免重复执行开销大的计算。

三、合理拆分组件 + 懒加载

  • 将页面拆成多个小组件,配合 React.lazySuspense 实现懒加载:
  • 避免一次性加载过多内容。

四、列表渲染优化:key 的使用和虚拟化

key 的正确使用

使用稳定、唯一的 key 避免 diff 误判导致重排:

虚拟列表

对于长列表,使用如 react-window / react-virtualized 等库实现只渲染可见部分:

五、避免不必要的 context 更新

React 的 Context 在 value 变化时会重新渲染所有消费它的组件。可用如下方式优化:
  • 使用 useMemo 包裹传递的 value:
  • 拆分多个 Context,按需更新。

六、性能监测工具推荐

  • React DevTools Profiler:分析组件渲染时间和频率。
  • Why Did You Render:识别组件是否发生了不必要的重新渲染。

七、其他优化建议

  • 使用生产环境构建(React 会移除开发警告和额外逻辑)。
  • 减少 Refs 的使用,避免绕过 React 的响应式机制。
  • 拆分状态管理逻辑到外部库(如 Redux)减轻组件负担。

总结

React 性能优化没有银弹,更多是通过细节和工程手段累积而来的。建议从性能瓶颈处入手,结合实际场景使用 memo、lazy、虚拟列表、useCallback 等技术,才能真正让应用跑得更快。
上一篇
如何在React中使用styled-components
下一篇
10 月 Mac 软件分享