Skip to content

react-best-practices

React 和 Next.js 性能优化最佳实践,基于 Vercel 工程团队的经验总结。

触发条件

  • 编写、审查或重构 React 组件
  • 优化 Next.js 页面性能
  • 改进数据获取模式
  • 减少打包体积
  • 提升应用整体性能

核心原则

组件优化

tsx
// 使用 React.memo 避免不必要的重渲染
const MemoizedComponent = React.memo(({ data }) => {
  return <div>{data}</div>
})

// 使用 useMemo 缓存计算结果
const processedData = useMemo(() => {
  return heavyComputation(rawData)
}, [rawData])

// 使用 useCallback 保持函数引用稳定
const handleClick = useCallback(() => {
  doSomething(id)
}, [id])

数据获取

tsx
// Next.js 服务端组件中的数据获取
async function Page({ params }) {
  const data = await fetch(`/api/items/${params.id}`)
  return <ItemDetail data={data} />
}

代码分割

tsx
// 动态导入减少首屏体积
const HeavyComponent = dynamic(() => import('./HeavyComponent'), {
  loading: () => <Skeleton />
})

性能检查清单

  • ✅ 避免不必要的重渲染
  • ✅ 正确使用 React.memo / useMemo / useCallback
  • ✅ 路由级别的代码分割
  • ✅ 图片和字体优化
  • ✅ 服务端组件减少客户端 JS

示例提示词

> 审查这个 React 组件并提出性能优化建议
> 这个列表组件有 10000 项数据,如何优化滚动性能?
> 把这个类组件重构为使用 hooks 的函数组件

基于 Codex CLI v0.142.5