usePathname
usePathname
は、現在のURLの**パス名**を読み取るための、**クライアントコンポーネント**フックです。
app/example-client-component.tsx
'use client'
import { usePathname } from 'next/navigation'
export default function ExampleClientComponent() {
const pathname = usePathname()
return <p>Current pathname: {pathname}</p>
}
usePathname
は、意図的にクライアントコンポーネントの使用を必要とします。サーバーコンポーネントアーキテクチャにおいて、クライアントコンポーネントは最適化の阻害要因ではありません。それらは不可欠な部分です。
例えば、usePathname
を使用したクライアントコンポーネントは、最初のページ読み込み時にHTMLにレンダリングされます。新しいルートに移動するとき、このコンポーネントを再フェッチする必要はありません。代わりに、コンポーネントは一度(クライアントのJavaScriptバンドル内)ダウンロードされ、現在の状態に基づいて再レンダリングされます。
知っておくと良い点:
- サーバーコンポーネントから現在のURLを読み取ることはサポートされていません。この設計は、ページ間のナビゲーションでレイアウトの状態が保持されるようにするため、意図的なものです。
- 互換性モード
usePathname
は、フォールバックルートがレンダリングされている場合、またはpages
ディレクトリのページがNext.jsによって自動的に静的に最適化され、ルーターの準備ができていない場合にnull
を返す可能性があります。next.config
またはMiddleware
でリライトを使用する場合、ハイドレーションミスマッチエラーを回避するために、useState
とuseEffect
も使用する必要があります。リライトの例で詳細を確認してください。- プロジェクトに
app
ディレクトリとpages
ディレクトリの両方が検出されると、Next.jsは自動的に型を更新します。
パラメーター
const pathname = usePathname()
usePathname
はパラメーターを取りません。
戻り値
usePathname
は、現在のURLのパス名を文字列として返します。例えば
URL | 戻り値 |
---|---|
/ | '/' |
/dashboard | '/dashboard' |
/dashboard?v=2 | '/dashboard' |
/blog/hello-world | '/blog/hello-world' |
例
ルートの変更に応じて何かを実行する
app/example-client-component.tsx
'use client'
import { usePathname, useSearchParams } from 'next/navigation'
function ExampleClientComponent() {
const pathname = usePathname()
const searchParams = useSearchParams()
useEffect(() => {
// Do something here...
}, [pathname, searchParams])
}
バージョン | 変更点 |
---|---|
v13.0.0 | usePathname が導入されました。 |
これは役に立ちましたか?