Next.js 14 の App Router では、デフォルトが `use server` となっており、`use client` との適切な使い分けが重要です。本記事では、それぞれの違いや、適切な使い分けの指針を解説します。
Next.js 14 の App Router では、コンポーネントはデフォルトで サーバーコンポーネント (use server
) として動作します。
これにより、サーバー側でデータを取得し、SSR(サーバーサイドレンダリング)によるパフォーマンス最適化が行われます。
しかし、クライアントサイドでのインタラクティブな処理が必要な場合は use client
を指定し、クライアントコンポーネントとして扱う必要があります。
本記事では、use server
と use client
の違い、適切な使い分けについて解説します。
特徴 | use server (デフォルト) | use client |
---|---|---|
実行環境 | サーバー側で実行 | ブラウザ(クライアント側)で実行 |
状態管理 | できない | useState , useEffect などのフックが使用可能 |
イベントハンドラ | 使えない | クリックイベント (onClick ) などが設定可能 |
直接の DOM 操作 | 不可 | document.querySelector などの操作が可能 |
セキュリティ | 安全 | ブラウザで実行されるため、XSS などのリスクあり |
パフォーマンス | 高速 | インタラクティブな処理が必要な場合はやや遅い |
use server
は、Next.js 14 App Router で デフォルトの動作 となっています。
JSXexport default function ServerComponent() { return <h1>これはサーバーコンポーネントです</h1>; }
✅ 特徴
use server
の明示は不要(デフォルト)fetch()
で直接 API を呼び出せるuseState
, useEffect
などのフックは 使用不可🚀 サーバーコンポーネントに適したケース
クライアントコンポーネントとして動作させるには、use client
を明示する必要があります。
JSX"use client"; import { useState } from "react"; export default function ClientComponent() { const [count, setCount] = useState(0); return <button onClick={() => setCount(count + 1)}>カウント: {count}</button>; }
✅ 特徴
use client
を明示的に指定する必要ありuseState
, useEffect
, useRef
などのフックが 使用可能🚀 クライアントコンポーネントに適したケース
useState
を使った状態管理が必要なコンポーネントuseEffect
を使ったブラウザ API(localStorage
など)の操作use client
を指定すると バンドルサイズが増加し、パフォーマンスが低下する可能性がある ため、
可能な限り use server
(デフォルトの状態)でコンポーネントを作成するのが推奨されます。
✅ サーバーコンポーネントで完結する処理
ユーザーの操作(ボタンのクリック、フォーム入力)などが必要な場合、
use client
を明示的に設定する必要があります。
✅ クライアントコンポーネントが必要なケース
useState
, useEffect
を使うコンポーネントonClick
, onChange
などのイベント処理ハイブリッド構成 として、use server
の中で use client
を使うことも可能です。
JSXexport default function ServerComponent() { return ( <div> <h1>サーバーコンポーネント</h1> <ClientComponent /> </div> ); } import { useState } from "react"; ("use client"); function ClientComponent() { const [count, setCount] = useState(0); return <button onClick={() => setCount(count + 1)}>カウント: {count}</button>; }
Next.js 14 App Router では、デフォルトで use server
が適用されますが、
インタラクティブなコンポーネントには use client
を使用する必要があります。
📌 学んだこと
use server
はデフォルトで、データ取得や SSR に最適use client
は useState
やイベント処理が必要な場合に使用use server
を優先適切に使い分けて、効率的な Next.js アプリを構築しましょう。
回 | タイトル | リンク |
---|---|---|
第 1 回 | Page Router と App Router の違い | 詳 細 |
第 2 回 | App Router のルーティング | 詳 細 |
第 3 回 | App Router における Metadata の設定 | 詳 細 |
第 4 回 | OGP・Twitter 画像の自動設定 | 詳 細 |
第 5 回 | App Router における API ルートの基本 | 詳 細 |
第 6 回 | use server と use client の使い分け | この記事 |
第 7 回 | useContext の Provider の適用方法 | 詳 細 |
第 8 回 | next/link の基本と使い方 | 詳 細 |
第 9 回 | next/image の概要 | 詳 細 |
第 10 回 | next/navigation の使い方 | 詳 細 |
当サイトの情報は、一般的な参考情報として提供しております。
正確な情報の掲載に努めておりますが、その内容の正確性・完全性・最新性を保証するものではありません。
記事の内容をご利用の際は、ご自身の責任において判断し、必要に応じて専門家にご相談ください。
当サイトの情報の利用により生じたいかなる損害についても、一切の責任を負いかねますのでご了承ください。
※ 本ページでは、著作権法に基づき、適正な引用の範囲内でコンテンツを紹介しています。
オリジナルの情報は発信元をご確認ください。
もし問題がありましたら、こちら からお問い合わせください。