メインコンテンツまでスキップ

useSelectedLayoutSegments

useSelectedLayoutSegmentsClient Component フックで、使用されるLayoutから下位にあるアクティブルートセグメントを読み取ることができます。

これは、パンくずリストなどアクティブな子セグメントを知る必要がある親 Layout 内で UI を作成するのに便利です。

app/example-client-component.tsx
'use client'

import { useSelectedLayoutSegments } from 'next/navigation'

export default function ExampleClientComponent() {
const segments = useSelectedLayoutSegments()

return (
<ul>
{segments.map((segment, index) => (
<li key={index}>{segment}</li>
))}
</ul>
)
}

Good to know:

  • useSelectedLayoutSegmentsClient Component フックであり、Layout はデフォルトで Server Components であるため、useSelectedLayoutSegments は通常、Layout にインポートされる Client Component を介して呼び出されます。
  • 戻り値のセグメントには Route Groups が含まれているかもしれず、それらをUIに含めたくない場合があります。ブラケットで始まるアイテムを削除するために配列の filter() メソッドを使うことができます。

パラメータ

const segments = useSelectedLayoutSegments(parallelRoutesKey?: string)

useSelectedLayoutSegments は、オプションで parallelRoutesKey を受け取り、そのスロット内のアクティブルートセグメントを読み込むことができます。

戻り値

useSelectedLayoutSegments は、フックが呼ばれた Layout の1レベル下のアクティブなセグメントを含む文字列の配列を返します。存在しない場合は空の配列を返します。

例えば、以下のような Layout と URL がある場合、返されるセグメントは次のようになります:

Layout訪問した URL返されるセグメント
app/layout.js/[]
app/layout.js/dashboard['dashboard']
app/layout.js/dashboard/settings['dashboard', 'settings']
app/dashboard/layout.js/dashboard[]
app/dashboard/layout.js/dashboard/settings['settings']

バージョン履歴

バージョン変更内容
v13.0.0useSelectedLayoutSegments が導入されました。