페이지를 새로고침하면 컴포넌트들이 로딩 시간에 따라 순차적으로 나타나는 것을 확인할 수 있습니다:
이 데이터는 300ms 후에 로드됩니다.
✅ 이 컴포넌트는 가장 빠르게 로드되어 사용자가 즉시 볼 수 있습니다.
이 데이터는 1.5초 후에 로드됩니다.
⏳ 이 컴포넌트는 빠른 컴포넌트 이후에 나타납니다.
이 데이터는 3초 후에 로드됩니다.
🐌 이 컴포넌트는 복잡한 처리로 인해 늦게 나타납니다.
// 1. Suspense로 각 컴포넌트를 감싸기
<Suspense fallback={<LoadingComponent />}>
<SlowServerComponent />
</Suspense>
// 2. 독립적인 Server Component 정의
async function SlowServerComponent() {
const data = await fetchSlowData(); // 서버에서 데이터 페칭
return <div>{data.content}</div>;
}
// 3. 다양한 로딩 UI 제공
function LoadingComponent() {
return <div className="animate-pulse">로딩 중...</div>;
}
// ✅ 결과:
// - 각 컴포넌트가 준비되는 대로 표시
// - 사용자는 빈 페이지를 기다리지 않음
// - 전체 페이지 로딩 완료를 기다리지 않음🔄 실험해보기: 페이지를 새로고침하여 각 컴포넌트가 다른 시점에 나타나는 Streaming 효과를 직접 체험해보세요! 개발자 도구의 Network 탭에서 HTML이 여러 청크로 전송되는 것도 확인할 수 있습니다.
이 데이터는 5초 후에 로드됩니다.
🚀 이 컴포넌트는 대용량 데이터 처리로 가장 늦게 나타납니다.