- HOME >
- Jamstack用語集 >
- useParams
useParams
ユースパラムス
useParams を分かりやすく
「useParams」って聞いたことありますか?「そもそもこれいつ使うん?」って思いますよね。でも大丈夫、ちゃんと説明しますからね。useParamsはReactのルーティングライブラリ「React Router」の一部で、URLのパラメータを取得するために使われるんです。
例えば、ブログアプリを作っていて、特定の記事を表示するページがあるとしましょう。そのページのURLは「/posts/:id」のようになっていて、":id" の部分に記事のIDが入るんです。useParamsを使えば、そのIDを取得できるというわけなんですよ。
「じゃあどうやって使うの?」って思いますよね。例え話で分かりやすく説明しましょう。あなたが郵便配達だと想像してみてください。あなたの手元にはたくさんの手紙があり、それぞれには異なる住所が書かれています。手紙(リクエスト)を正しい家(ルート)に配るためには、その住所(URLパラメータ)を読む必要があります。useParamsはまさにその「住所を読む」役割を果たしてくれるんです。
さて、具体的にコードで見てみましょう。
import { useParams } from "react-router-dom";
function PostPage() {
const { id } = useParams();
// idを使って何かする...
return <div>...</div>;
}
このコードでは、URLからidパラメータを取得しています。このidは、URLの"/posts/:id"の部分にあたるものですね。idを取得できれば、それを元にデータベースから記事を取得したりできるわけです。
ここまで大丈夫ですか?useParamsは、特定のパラメータをURLから取り出すための強力なツールです。一度理解してしまえば、めっちゃ便利なんですよ!「そもそもこれ使う意味あるん?」って方いるかと思いますが、あります。だいぶヤバいやつです。
結論
useParams は、現在の URL によって入力されたルートの動的パラメータを読み取ることができるクライアント コンポーネントフックです。一致した動的パラメータのキーと値のペアのオブジェクトを返します。useParams フックは、React Router のフックであり、現在の URL のパラメータにアクセスするために使用できます。このフックは、React Router バージョン 5.1 で導入されました。
useParams フックは、ルートにマッチした URL のパラメータのキーと値のペアのオブジェクトを返します。たとえば、ルートのパスが /user/:id
の場合、useParams フックは id
キーと一致する URL のパラメータの値を持つオブジェクトを返します。
useParams フックの使用例を次に示します。
import React from 'react';
import ReactDOM from 'react-dom';
import { BrowserRouter as Router, Switch, Route, useParams } from 'react-router-dom';
function App() {
return (
<Router>
<Switch>
<Route exact path="/">
<HomePage />
</Route>
<Route path="/user/:id">
<UserPage {...useParams()} />
</Route>
</Switch>
</Router>
);
}
function HomePage() {
return (
<h1>Home Page</h1>
);
}
function UserPage({ id }) {
return (
<h1>User Page</h1>
<p>User ID: {id}</p>
);
}
ReactDOM.render(<App />, document.getElementById('root'));
このコードは、次のページをレンダリングします。
/
にアクセスすると、HomePage コンポーネントがレンダリングされます。
/user/123
にアクセスすると、UserPage コンポーネントがレンダリングされ、id
プロパティに 123
の値が設定されます。
Next.js 13.3
Next.js 13.3 で、useParams フックがサポートされました。
app/example-client-component.tsx
'use client'
import { useParams } from 'next/navigation'
export default function ExampleClientComponent() {
const params = useParams()
console.log(params)
return <></>
}
このフックは、現在の URL のパラメータにアクセスするために使用でき、React Router の useParams
フックに基づいています。
useParams
フックは、ルートにマッチした URL のパラメータのキーと値のペアのオブジェクトを返します。たとえば、ルートのパスが /user/:id
の場合、useParams
フックは id
キーと一致する URL のパラメータの値を持つオブジェクトを返します。
useParams
フックの使用例を次に示します。
import { useParams } from 'next/router';
export default function MyPage() {
const { id } = useParams();
return (
<h1>User Page</h1>
<p>User ID: {id}</p>
);
}
このコードは、/user/123
にアクセスすると次のページをレンダリングします。
<h1>User Page</h1>
<p>User ID: 123</p>
useParams
フックは、動的ルーティングを作成するために役立つ便利なツールです。