React Server Components (RSC) là các component chỉ chạy và render trên server.
Đặc điểm chính:
- Zero Bundle Size: Không gửi JavaScript code của chúng xuống client.
- Truy cập trực tiếp Backend: Có thể gọi database, file system trực tiếp.
- Bất đồng bộ (Async): Thường được viết dưới dạng async function để await dữ liệu.
- Hạn chế: Không hỗ trợ state (useState), side-effects (useEffect), event handlers (onClick), hay Browser APIs.
Mặc định, mọi component trong Next.js App Router (app/) đều là Server Component.
tsx
// app/products/page.tsx — Server Component (mặc định)
// Có thể dùng async/await trực tiếp, access DB, không cần useEffect
async function ProductsPage() {
// Chạy trên server, không ship JS xuống client
const products = await db.products.findMany()
return (
<ul>
{products.map(p => (
<li key={p.id}>{p.name} — {p.price} VND</li>
))}
</ul>
)
}
export default ProductsPage