コンテンツをスキップ

default.js

`default.js` ファイルは、Next.js がフルページ読み込み後に 並列ルート 内の スロット のアクティブな状態を回復できない場合に、フォールバックをレンダリングするために使用されます。

ソフトナビゲーション中、Next.jsは各スロットのアクティブな状態(サブページ)を追跡します。しかし、ハードナビゲーション(フルページ読み込み)の場合、Next.jsはアクティブな状態を回復できません。この場合、現在のURLと一致しないサブページに対して`default.js`ファイルがレンダリングされます。

以下のフォルダ構造を考慮してください。`@team`スロットには`settings`ページがありますが、`@analytics`にはありません。

Parallel Routes unmatched routes

`/settings`にナビゲートすると、`@team`スロットは`settings`ページをレンダリングし、`@analytics`スロットの現在アクティブなページを維持します。

リフレッシュ時、Next.jsは`@analytics`に対して`default.js`をレンダリングします。`default.js`が存在しない場合、代わりに`404`がレンダリングされます。

さらに、`children`は暗黙的なスロットであるため、Next.jsが親ページのアクティブな状態を回復できない場合に、`children`のフォールバックをレンダリングするための`default.js`ファイルも作成する必要があります。

リファレンス

`params` (オプション)

ルートセグメントからスロットのサブページまでの動的ルートパラメータを含むオブジェクトに解決されるPromiseです。例:

app/[artist]/@sidebar/default.js
export default async function Default({
  params,
}: {
  params: Promise<{ artist: string }>
}) {
  const { artist } = await params
}
URLparams
app/[artist]/@sidebar/default.js/zackPromise<{ artist: 'zack' }>
app/[artist]/[album]/@sidebar/default.js/zack/nextPromise<{ artist: 'zack', album: 'next' }>
  • `params`プロパティはPromiseであるため、値にアクセスするには`async/await`またはReactの`use`関数を使用する必要があります。
    • バージョン14以前では、`params`は同期プロパティでした。後方互換性のために、Next.js 15では引き続き同期的にアクセスできますが、この動作は将来的に非推奨になります。