---
title: 使用组件组合实现并行数据获取
impact: CRITICAL
impactDescription: 消除服务端瀑布请求
tags: server, rsc, parallel-fetching, composition
---
## 使用组件组合实现并行数据获取
React 服务端组件在组件树中按顺序执行。通过组合的方式重构代码,以实现并行数据获取。
**错误写法(Sidebar 等待 Page 的 fetch 完成后才执行):**
```tsx
export default async function Page() {
const header = await fetchHeader()
return (
)
}
async function Sidebar() {
const items = await fetchSidebarItems()
return
}
```
**正确写法(两者同时发起 fetch):**
```tsx
async function Header() {
const data = await fetchHeader()
return {data}
}
async function Sidebar() {
const items = await fetchSidebarItems()
return
}
export default function Page() {
return (
)
}
```
**另一种方案(使用 children prop):**
```tsx
async function Header() {
const data = await fetchHeader()
return {data}
}
async function Sidebar() {
const items = await fetchSidebarItems()
return
}
function Layout({ children }: { children: ReactNode }) {
return (
{children}
)
}
export default function Page() {
return (
)
}