use client ディレクティブ
'use client'
ディレクティブは、クライアントサイドでレンダリングされるコンポーネントのエントリーポイントを宣言します。このディレクティブは、状態管理、イベントハンドリング、ブラウザAPIへのアクセスなど、クライアントサイドのJavaScript機能を必要とするインタラクティブなユーザーインターフェース(UI)を作成する際に使用します。これはReactの機能です。
知っておくと便利:
クライアントコンポーネントを含むすべてのファイルに
'use client'
ディレクティブを追加する必要はありません。サーバーコンポーネント内で直接レンダリングしたいコンポーネントを含むファイルにのみ追加します。'use client'
ディレクティブはクライアントとサーバーの境界を定義し、そのようなファイルからエクスポートされるコンポーネントはクライアントへのエントリーポイントとして機能します。
使用方法
クライアントコンポーネントのエントリーポイントを宣言するには、'use client'
ディレクティブをファイルの先頭、すべてのインポートの前に追加します:
'use client'
ディレクティブを使用する場合、クライアントコンポーネントのpropsはシリアライズ可能でなければなりません。これは、サーバーからクライアントにデータを送信する際にReactがシリアライズできる形式である必要があることを意味します。
サーバーコンポーネント内でのクライアントコンポーネントのネスト
サーバーコンポーネントとクライアントコンポーネントを組み合わせることで、パフォーマンスに優れかつインタラクティブなアプリケーションを構築できます:
- サーバーコンポーネント: 静的なコンテンツ、データフェッチ、SEOに適した要素に使用します。
- クライアントコンポーネント: 状態、エフェクト、ブラウザAPIを必要とするインタラクティブな要素に使用します。
- コンポーネント構成: サーバーとクライアントのロジックを明確に分離するために、必要に応じてクライアントコンポーネントをサーバーコンポーネント内にネストします。
以下の例では:
Header
は静的なコンテンツを扱うサーバーコンポーネントです。Counter
はページ内でインタラクティブ性を実現するクライアントコンポーネントです。
リファレンス
'use client'
の詳細については、Reactドキュメントを参照してください。