Next.js - React Essentials
Server Components
- レンダリングされる場所をサーバ側に固定できるようになった
- Client Components (及びこれまでの Pages Router)
- pre-rendering & hydration で動作する。つまりどちらサイドでも描写される可能性がある。
- 依然として JavaScript が必要
- Server Components
- サーバーサイドでのみレンダリングされる
- クライアントサイドでレンダリングされることはない
- JavaScript は完全に必要ない
- Server Components にはレンダリングの種類が 2 つある
- Static Rendering
- ビルド時に確定するもの
- SSG, ISR と同じ
- キャッシュ可
- Dynamic Rendering
- リクエスト時に確定するもの
- SSR(
getServerSideProps()
)と同じ
- キャッシュ不可
- メリット
- 速いデータ取得
- バンドルサイズの減少
- Ruby on Rails のような開発体験
- App Router ではコンポーネントはデフォルトで Server Components としてレンダリングされる
- 以下のファイル名は特別な役割を持つ
layout
page
loading
not-found
error
global-error
route
template
default
Client Components
- インタラクティブ性をもつコンポーネント
- pre-rendered & hydrated される
- 従前の Next.js の Pages Router と同じ
use client
directive
- ファイルの先頭に書くと、Client Components としてレンダリングされる
- Server のみでレンダリングするものと、Client でもレンダリングするものの境界を規定する
- 配下のコンポーネントはすべて Client Components としてレンダリングされるようになる
使い分け