<SWRConfig value={{ suspense: true }}>
<Profile />
</SWRConfig>
<Suspense fallback="Loading reviews...">
<Reviews />
</Suspense>
서버에서 React 컴포넌트를 렌더링할 수 있다. 이것은 서버에서 HTML을 미리 생성하는 서버 측 렌더링(SSR)과 근본적으로 다릅니다. 서버 컴포넌트를 사용하면 "클라이언트 측 JavaScript가 필요하지 않으므로" 페이지 렌더링이 빨라집니다. 이것은 서버 렌더링의 가장 좋은 부분을 클라이언트 측 상호 작용과 결합하여 응용 프로그램의 사용자 경험을 향상시킵니다
/** @type {import('next').NextConfig} */
module.exports = {
reactStrictMode: true,
experimental: {
reactRoot: true,
runtime: "nodejs",
serverComponents: true,
},
};
xx.server.tsx
으로 수정해준다.import { Suspense } from "react";
let finished = false;
function List() {
if (!finished) {
throw Promise.all([
new Promise((resolve) => setTimeout(resolve, 15000)),
new Promise((resolve) => {
finished = true;
resolve("");
}),
]);
}
return <ul>xxxxx</ul>;
}
export default function Coins() {
return (
<div>
<h1>Welcome to RSC</h1>
<Suspense fallback="Rendering in the server...">
<List />
</Suspense>
</div>
);
}