← 返回博客
·7 分钟阅读

理解 React Server Components

Server Components 是 React 开发的颠覆性变革。了解它们如何减少客户端 JavaScript、提升性能并简化 Next.js 应用中的数据获取。


什么是 React Server Components?

React Server Components(RSC)是一种全新类型的组件,专在服务端运行。它们由 React 团队推出,是 Next.js App Router 的核心组成部分。

与在浏览器中渲染的传统 React 组件不同,Server Components 在服务端执行,只有它们的输出(类似 HTML 的数据)会被发送到客户端。

为什么使用 Server Components?

1. 减少打包体积

Server Components 永远不会将其 JavaScript 发送到客户端。这意味着:

  • 大型依赖项保留在服务端。
  • 只有渲染后的输出到达浏览器。
  • 用户下载的代码显著减少。
  • 2. 直接访问数据库

    Server Components 可以直接查询数据库,无需构建 API 层:

    import { db } from "@/lib/db";
    

    export default async function PostList() { const posts = await db.post.findMany(); return posts.map((p) => ); }

    3. 自动代码分割

    Next.js 会自动对应用进行代码分割。只有需要交互的组件才会被发送到客户端。

    服务端组件与客户端组件

    Next.js 提供了服务端和客户端组件之间的明确界限:

  • 在文件顶部添加 "use client" 将其标记为客户端组件。
  • 没有此指令时,组件默认为服务端组件。
  • "use client";
    

    import { useState } from "react";

    export function LikeButton() { const [likes, setLikes] = useState(0); return ; }

    最佳实践

  • 尽可能在服务端组件中获取数据。
  • 将交互性(状态、副作用、事件处理)推到组件树的叶子节点作为客户端组件。
  • 使用能让应用既快速又易于维护的模式。