React Best Practices

Polar Sponsor
爱发电 赞助
.NET 9.0

来自 Vercel 工程团队的 React 和 Next.js 性能优化指南,涵盖 8 个类别的 57 条规则,用于编写、审查和重构 React 代码。

反应最佳操作

功能概述

反应最佳操作是一项面向实际任务的技能,主要用于综合性能优化指南 Vercel Engineering的 React and Next.js 应用程序;包含57条规则, 共8个类别, 按影响排列;

核心要点

  • OpenC。
  • 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
  • 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。

使用与执行

该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;

结果检查与注意事项

若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。

React 最佳实践

由 Vercel 工程团队提供的 React 与 Next.js 应用全面性能优化指南。涵盖 8 个类别共 57 条规则,按影响程度排序。

安装

OpenClaw / Moltbot / Clawbot

npx clawhub@latest install react-best-practices

该技能的作用

提供可落地执行的规则,用于:

  • 消除请求瀑布(request waterfalls)
  • 优化包体积(bundle size)
  • 提升服务端性能
  • 高效进行客户端数据获取
  • 最小化组件重渲染(re-renders)
  • 渲染性能优化
  • JavaScript 微优化
  • 边缘场景下的高级模式

适用场景

  • 编写新的 React 组件或 Next.js 页面时
  • 实现数据获取逻辑(客户端或服务端)时
  • 审查代码是否存在性能问题时
  • 重构 React/Next.js 应用时
  • 优化包体积或加载时间时
  • 调试渲染缓慢或请求瀑布问题时

关键词

react performance, nextjs optimization, bundle size, waterfalls, suspense, server components, rsc, rerender, usememo, dynamic import, parallel fetching, cache, swr

规则类别优先级

优先级 类别 影响程度 规则前缀
1 消除请求瀑布 CRITICAL async-
2 包体积优化 CRITICAL bundle-
3 服务端性能 HIGH server-
4 客户端数据获取 MEDIUM-HIGH client-
5 重渲染优化 MEDIUM rerender-
6 渲染性能 MEDIUM rendering-
7 JavaScript 性能 LOW-MEDIUM js-
8 高级模式 LOW advanced-

速查表

1. 消除请求瀑布(CRITICAL)

规则 说明
async-defer-await 将 await 移至实际使用它的分支中
async-parallel 对相互独立的操作使用 Promise.all()
async-dependencies 使用 better-all 处理部分依赖关系
async-api-routes 在 API 路由中尽早启动 Promise,延迟 await
async-suspense-boundaries 使用 Suspense 流式传输内容

2. 包体积优化(CRITICAL)

规则 说明
bundle-barrel-imports 直接导入,避免通过 barrel 文件导入
bundle-dynamic-imports 对重型组件使用 next/dynamic
bundle-defer-third-party 在 hydration 完成后再加载分析/日志等第三方脚本
bundle-conditional 仅在功能启用时才加载对应模块
bundle-preload 在 hover/focus 时预加载资源,提升感知速度

3. 服务端性能(HIGH)

规则 说明
server-auth-actions 像处理 API 路由一样对 Server Actions 进行身份验证
server-cache-react 使用 React.cache() 实现按请求去重
server-cache-lru 使用 LRU 缓存实现跨请求缓存
server-dedup-props 避免 RSC props 中重复序列化数据
server-serialization 最小化传递给客户端组件的数据量
server-parallel-fetching 重构组件结构以并行发起 fetch 请求
server-after-nonblocking 使用 after() 执行非阻塞操作

4. 客户端数据获取(MEDIUM-HIGH)

规则 说明
client-swr-dedup 使用 SWR 实现自动请求去重
client-event-listeners 去重全局事件监听器
client-passive-event-listeners 对 scroll 等事件使用 passive 监听器
client-localstorage-schema 为 localStorage 数据添加版本号并精简其内容

5. 重渲染优化(MEDIUM)

规则 说明
rerender-defer-reads 不要订阅仅在回调中使用的状态
rerender-memo 将耗时计算提取到 memoized 组件中
rerender-memo-with-default-value 将默认的非原始类型 props 提升至组件外部
rerender-dependencies 在 useEffect 中使用原始类型作为依赖项
rerender-derived-state 订阅派生出的布尔值,而非原始值
rerender-derived-state-no-effect 在渲染阶段推导状态,而非在 effect 中
rerender-functional-setstate 对需保持稳定性的回调使用函数式 setState
rerender-lazy-state-init 对开销较大的初始值,向 useState 传入初始化函数
rerender-simple-expression-in-memo 避免对简单原始值使用 memo
rerender-move-effect-to-event 将交互逻辑移至事件处理器中
rerender-transitions 对非紧急更新使用 startTransition
rerender-use-ref-transient-values 对频繁变化的临时值使用 ref

6. 渲染性能(MEDIUM)

规则 说明
rendering-animate-svg-wrapper 对 div 包裹器进行动画,而非 SVG 元素本身
rendering-content-visibility 对长列表使用 content-visibility
rendering-hoist-jsx 将静态 JSX 提取到组件外部
rendering-svg-precision 降低 SVG 坐标精度
rendering-hydration-no-flicker 使用内联 script 传递仅客户端所需的数据
rendering-hydration-suppress-warning 抑制预期存在的 hydration 不匹配警告
rendering-activity 使用 Activity 组件控制显示/隐藏
rendering-conditional-render 条件渲染优先使用三元运算符,而非 &&
rendering-usetransition-loading 加载状态优先使用 useTransition

7. JavaScript 性能(LOW-MEDIUM)

规则 说明
js-batch-dom-css 通过 CSS 类或 cssText 批量修改样式
js-index-maps 为高频查找构建 Map
js-cache-property-access 在循环中缓存对象属性访问
js-cache-function-results 在模块级 Map 中缓存函数结果
js-cache-storage 缓存 localStorage/sessionStorage 的读取操作
js-combine-iterations 将多个 filter/map 合并为单次遍历
js-length-check-first 在执行高开销操作前先检查数组长度
js-early-exit 尽早从函数中返回
js-hoist-regexp 将正则表达式创建逻辑提升至循环外
js-min-max-loop 使用循环而非 sort 实现 min/max 查找
js-set-map-lookups 使用 Set/Map 实现 O(1) 时间复杂度查找
js-tosorted-immutable 使用 toSorted() 保证不可变性

8. 高级模式(LOW)

规则 说明
advanced-event-handler-refs 将事件处理器存储在 ref 中
advanced-init-once 每个应用加载周期仅初始化一次
advanced-use-latest 使用 useLatest 获取稳定的回调 ref

使用方法

查阅单条规则

rules/ 目录下的每条规则文件均包含:

  • 该规则重要性的简要说明
  • 错误代码示例及原因分析
  • 正确代码示例及原理说明
  • 额外上下文与参考资料
rules/async-parallel.md
rules/bundle-barrel-imports.md
rules/rerender-memo.md

完整编译文档

如需查看所有规则展开后的完整指南,请查阅:AGENTS.md

这份超过 2900 行的文档包含全部规则的详细代码示例与深入解释,适用于系统性参考。

核心模式

并行数据获取

// 错误:串行获取
const user = await fetchUser()
const posts = await fetchPosts()

// 正确:并行获取
const [user, posts] = await Promise.all([
  fetchUser(),
  fetchPosts()
])

动态导入

// 错误:Monaco 打包进主 chunk
import { MonacoEditor } from './monaco-editor'

// 正确:按需加载
const MonacoEditor = dynamic(
  () => import('./monaco-editor').then(m => m.MonacoEditor),
  { ssr: false }
)

函数式 setState

// 错误:存在闭包过期风险
const addItem = useCallback((item) => {
  setItems([...items, item])
}, [items]) // items 每次变更都会导致重新创建

// 正确:始终基于最新状态
const addItem = useCallback((item) => {
  setItems(curr => [...curr, item])
}, []) // 引用稳定

绝对禁止事项

  1. 绝对禁止在可并行执行时仍顺序 await
  2. 绝对禁止从 barrel 文件导入(import { X } from 'lib')——请直接导入
  3. 绝对禁止在 Server Actions 中跳过身份验证——应视其为 API 路由同等对待
  4. 绝对禁止向客户端组件传递整个对象,而实际只需其中某个字段
  5. 绝对禁止对数字类型的条件渲染使用 && ——请改用三元运算符
  6. 绝对禁止订阅仅在事件处理器中使用的状态——应在需要时按需读取
  7. 绝对禁止使用 .sort() 原地修改数组——请改用 .toSorted()
  8. 绝对禁止将初始化逻辑放在 useEffect([]) 中——请使用模块级守卫

相关专题

更多
JavaScript React组件优化与性能提升实战
JavaScript React组件优化与性能提升实战

本专题围绕 React 框架在大型前端项目中的性能优化展开,讲解组件生命周期优化、虚拟 DOM 原理、状态管理策略及懒加载技术。通过实战案例,帮助开发者构建性能优良、响应迅速的前端应用。

2026.04.13

165

18

React 18状态管理与Hooks高级实践
React 18状态管理与Hooks高级实践

本专题专注于 React 18 的高级开发技术,详细讲解 useState、useEffect、useReducer、useContext 等 Hooks 的使用技巧,以及 Redux、Zustand 等状态管理工具的集成与优化方法。通过真实案例,帮助前端开发者构建可维护、性能优良的现代 React 应用。

2026.02.10

183

17

Vibeknow在线使用入口合集
Vibeknow在线使用入口合集

本专题汇总了Vibeknow在线创作视频的官方入口及网页版使用教程,涵盖PPT、PDF、Word等文档一键转讲解视频的核心操作,并整理了免费版水印规则与手机端浏览器访问指南,助你快速将知识内容视频化。

2026.09.21

0

20

NumPy随机数文件读写与dtype数据类型
NumPy随机数文件读写与dtype数据类型

本专题整理 NumPy 随机数、文件读写与 dtype 数据类型相关教程,覆盖 Generator/random、随机数种子、正态分布采样、npy/npz/CSV/TXT 保存读取、loadtxt/savetxt、memmap、大文件处理、astype 类型转换、结构化 dtype、整数溢出和精度丢失等场景。

2026.09.21

0

24

NumPy矩阵运算与线性代数计算
NumPy矩阵运算与线性代数计算

本专题整理 NumPy 矩阵运算与线性代数计算相关教程,覆盖矩阵乘法、dot 与 @ 运算符、逆矩阵、行列式、特征值与特征向量、SVD、线性方程组、欧氏距离、矩阵分解和大规模矩阵性能优化等内容,帮助读者掌握 np.linalg 与矩阵计算实战。

2026.09.21

0

20

NumPy广播机制数学运算与统计分析
NumPy广播机制数学运算与统计分析

本专题整理 NumPy 广播机制、数组数学运算与统计分析相关教程,覆盖广播规则、维度对齐、矩阵与数组加减除法、向量化计算、均值方差、分位数、中位数、直方图和 unique 频次统计等场景,帮助读者掌握 ndarray 高效计算与统计处理方法。

2026.09.21

0

17

NumPy数组创建索引切片与数据选择
NumPy数组创建索引切片与数据选择

本专题整理 NumPy 数组创建、索引、切片与数据选择相关教程,覆盖 np.array、zeros/ones、多维数组形状、基础切片、花式索引、布尔索引、条件筛选、视图与副本等常用场景,帮助读者系统掌握 ndarray 数据构造与高效提取方法。

2026.09.21

0

12

Aionclaw智能助手介绍
Aionclaw智能助手介绍

本专题汇总了AionClaw(AI龙虾助手)的功能介绍与在线使用入口。AionClaw是杭州趣猿人工智能有限公司推出的桌面级AI智能体,能直接在电脑上读写文件、运行脚本、操作浏览器,自动交付Word、PPT、Excel等成品。

2026.09.20

0

13

AionClaw AI智能体与电脑自动化任务执行功能使用教程
AionClaw AI智能体与电脑自动化任务执行功能使用教程

AionClaw专题整理AI智能体与电脑自动化相关功能使用教程,涵盖安装部署、AI任务执行、Skills技能、文件处理、浏览器控制、电脑操作、持久记忆、聊天工具连接以及办公、编程和内容创作等功能,帮助用户快速掌握AionClaw的实际使用方法。

2026.09.20

0

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
React 教程
React 教程

共58课时 | 11.9万人学习

国外Web开发全栈课程全集
国外Web开发全栈课程全集

共12课时 | 1.4万人学习