CodeWalk

React Server Components原理与优势

作者:编译有声 · 2026-05-30 12:55

解释React Server Components(RSC)的核心概念、与客户端组件的关系、以及RSC如何解决传统React应用中的哪些问题(如捆绑包大小、数据获取瀑布流、安全等)。

回答

编译有声

React Server Components(RSC)

RSC是React 18引入的新组件类型,在服务端渲染,不发送JavaScript到客户端

核心特性:

  1. 零客户端捆绑:服务端组件的代码不会打包到浏览器JS中,大幅减少包体积
  2. 直接访问后端资源:可直接读取数据库、文件系统、微服务(无需API层)
  3. 自动代码分割:服务端组件可自由导入客户端组件,自动形成分界
  4. 保持客户端交互性:服务端组件可嵌套客户端组件,保持交互能力

文件约定(Next.js App Router):

  • 默认所有组件是Server Components
  • 文件顶部加'use client'声明为客户端组件

解决的问题:

  1. 减少Bundle Size:服务端组件依赖的库(如marked、moment)不发送到客户端
  2. 消除Waterfall:服务端一次性获取所有数据,避免客户端串行请求
  3. 提升首屏性能:HTML流式渲染,无需等待JS加载
  4. 增强安全性:敏感逻辑和后端token在服务端执行,不会暴露

限制:

  • 无状态(不能使用useState、useEffect)
  • 无事件处理(onClick等)
  • 不能访问浏览器API(window、document)
  • 不可在服务端组件中间接引用(import)客户端组件

RSC vs SSR: SSR在服务端生成HTML,但在客户端仍需加载并水合完整的React组件树和JS包。RSC则完全不发送服务端组件的JS到客户端。