React Server Components (RSC) 是 React 18+ 引入的新特性,允许组件在服务端渲染,减少客户端 JavaScript 体积。
// app/articles/page.tsx (Server Component)
import { db } from '@/lib/db'
export default async function ArticlesPage() {
const articles = await db.article.findMany({
where: { status: 'published' },
orderBy: { createdAt: 'desc' },
})
return (
<div>
{articles.map(article => (
))}
</div>
)
}
// ArticleCard 可以是 Client Component
'use client'
import { motion } from 'framer-motion'
export function ArticleCard({ article }) {
return (
<h2>{article.title}</h2>
<p>{article.excerpt}</p>
)
}
// 并行数据获取
async function getArticle(id: string) {
const [article, comments] = await Promise.all([
db.article.findUnique({ where: { id } }),
db.comment.findMany({ where: { articleId: id } }),
])
return { article, comments }
}
React Server Components 代表了 React 未来的发展方向,合理使用可以大幅提升应用性能。