什么是 React Server Components(RSC)?服务端组件和客户端组件如何区分?
RSC 是在服务端渲染、不发送到客户端的组件,能直接访问数据库/文件系统,且不增加客户端 JS 体积。
- Server Component(默认):在
app/下不加'use client'的组件,运行在服务端,可async、可直接查库 - Client Component:文件顶部写
'use client'指令,运行在浏览器,可使用useState/事件
// 服务端组件(默认)
export default async function Page() {
const data = await db.query() // 直接查库,不暴露给前端
return <ClientPart initial={data} />
}
// client.tsx
'use client'
export default function ClientPart({ initial }) {
const [n, setN] = useState(initial)
return <button onClick={() => setN(n + 1)}>{n}</button>
}原则:能服务端的尽量服务端(减小包体);需要交互/浏览器 API 才标
'use client'。