template.js
テンプレートファイルは、レイアウトと似ており、レイアウトまたはページをラップします。ルート間で状態を維持するレイアウトとは異なり、テンプレートは一意のキーが与えられるため、子のクライアントコンポーネントはナビゲーション時に状態をリセットします。
あまり一般的ではありませんが、以下の機能が必要な場合にテンプレートをレイアウトの代わりに使用することを選択できます:
useEffect
(ページビューのログなど)とuseState
(ページごとのフィードバックフォームなど)に依存する機能。- デフォルトのフレームワーク動作を変更する場合。例えば、レイアウト内のSuspenseバウンダリーは、最初にレイアウトが読み込まれた時にのみフォールバックを表示し、ページ切り替え時には表示しません。テンプレートの場合、フォールバックは各ナビゲーション時に表示されます。
Props
children
(必須)
テンプレートはchildren
プロップを受け取ります。例:
補足:
- デフォルトでは、
template
はサーバーコンポーネントですが、"use client"
ディレクティブを通じてクライアントコンポーネントとしても使用できます。- ユーザーが同じ
template
を共有するルート間を移動する場合、コンポーネントの新しいインスタンスがマウントされ、DOMエレメントが再作成され、クライアントコンポーネントの状態は保持されず、エフェクトが再同期されます。
バージョン履歴
バージョン | 変更点 |
---|---|
v13.0.0 | template 導入時期。 |