前置知识: React

Server-Components与Client-Components

00:00
2 min Advanced 2026/6/14

React Server Components与Client Components界限划分与最佳实践。

1. Server Components

1.1 特点

  • 服务端渲染,不发送 JS 到客户端
  • 直接访问数据库文件系统
  • 不能使用 useState、useEffect 等客户端 Hook
  • 不能监听事件
// Server Component
async function UserProfile({ userId }) {
  const user = await db.user.findUnique({ where: { id: userId } });

  return (
    <div>
      <h1>{user.name}</h1>
      <p>{user.bio}</p>
    </div>
  );
}

2. Client Components

2.1 声明方式

'use client';

import { useState } from 'react';

export function Counter() {
  const [count, setCount] = useState(0);
  return <button onClick={() => setCount((c) => c + 1)}>{count}</button>;
}

2.2 特点

  • 客户端渲染和交互
  • 可使用所有 React Hook
  • 可监听事件
  • 发送 JS 到客户端

3. 界限划分

场景ServerClient
获取数据
访问后端资源
交互击/输入
useState/useEffect
自定义 Hook(依赖状态)
大型依赖(如 D3)(不发送 JS)

4. 组合模式

// Server Component
export default function Page() {
  return (
    <div>
      <ServerHeader /> {/* Server Component */}
      <ClientCounter /> {/* Client Component */}
      <ServerFooter /> {/* Server Component */}
    </div>
  );
}

Server Component 可以导入 Client Component,但 Client Component 不能导入 Server Component。

知识检测

学习进度

-- 已学文档
--% 知识覆盖率

学习推荐

专注模式