コンテンツにスキップ

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).artist
}
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では同期的にアクセスできますが、この動作は将来非推奨となります。