useSelectedLayoutSegments
useSelectedLayoutSegments
は、呼び出し元のレイアウトより**下にある**アクティブなルートセグメントを読み取ることができる**クライアントコンポーネント**のフックです。
これは、ブレッドクラムなど、アクティブな子セグメントの情報を必要とする親レイアウトで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>
)
}
知っておくと良いこと:
useSelectedLayoutSegments
はクライアントコンポーネントのフックであり、レイアウトはデフォルトでサーバーコンポーネントであるため、useSelectedLayoutSegments
は通常、レイアウトにインポートされるクライアントコンポーネントを介して呼び出されます。- 返されるセグメントにはルートグループが含まれる場合があり、それらをUIに含めたくない場合があります。その場合は、括弧で始まる項目を削除するために
filter()
配列メソッドを使用できます。
パラメーター
const segments = useSelectedLayoutSegments(parallelRoutesKey?: string)
useSelectedLayoutSegments
は、**オプションで** parallelRoutesKey
を受け入れ、そのスロット内のアクティブなルートセグメントを読み取ることができます。
戻り値
useSelectedLayoutSegments
は、フックが呼び出されたレイアウトの1レベル下のアクティブなセグメントを含む文字列の配列を返します。存在しない場合は空の配列を返します。
例えば、以下のレイアウトとURLが与えられた場合、返されるセグメントは次のようになります。
レイアウト | 訪問した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.0 | useSelectedLayoutSegments が導入されました。 |
この情報は役に立ちましたか?