CSR(クライアントサイドレンダリング)
SSR(サーバーサイドレンダリング)
SG(静的サイト生成)
next13.4以降、デフォルトでサーバーコンポーネントを使用されることになった
⇒ 関数コンポーネント内で非同期でデータフェッチすることができるようになった
⇒ 場合によってはuseEffectなどの機能を活用してCSRと使い分けたい場合がある
use client
を先頭に指定したことにより、SSRとして扱うべき処理もクライアントコードとみなされるため、画面描画パフォーマンスに影響を与える可能性がある
// このファイルではCSRを使用することを示す記述
// 指定がなければデフォルトでSSRコードとみなされる
'use client'
import ClientComponent from "./components/ClinetComponent";
export default function SSR() {
const [state, setState] = useState(undefined);
useEffect(() => {
setState('client loaded');
}, [])
return (
<>
<div>SSR Page</div>
<div>{state}</div>
</>
)
}
対策:CSRで動かしたい処理を別コンポーネントに切り離す
import ClientComponent from "./components/ClinetComponent";
export default function SSR() {
return (
<>
<div>SSR Page</div>
<ClientComponent />
</>
)
}