React RouterでURLを取得し、画面表示する方法

ReactアプリでURLのパスを取得する方法について解説します。
React Routerを使うと、現在のURLを簡単に取得でき、それを使ってアプリの挙動を制御できます。

URLを取得する基本的な方法

useLocation フックを利用

React RouterのuseLocationフックを使って、現在のURLを取得できます。以下のように簡単に実装可能です。

import { useLocation } from 'react-router-dom';

function MyComponent() {
  const location = useLocation();
  return <p>Current URL: {location.pathname}</p>;
}

上記のコードでは、location.pathnameを使って現在のURLパスを取得し、それを画面に表示しています。

generatePath()を利用してURLを動的に生成

URLのパスに動的なパラメータを挿入する場合、generatePath()を使用します。例えば、ユーザーIDを含むURLを生成する方法です。

import { generatePath } from 'react-router-dom';

function MyComponent() {
  const userId = 123;
  const path = generatePath("/users/:id", { id: userId });
  return <p>Generated Path: {path}</p>;
}

この例では、/users/:idのURLパスに動的にユーザーIDを挿入し、/users/123を生成しています。

URL取得とページ遷移の組み合わせ

URL取得は、ページ遷移と組み合わせて使用することが多いです。
例えば、特定のページに遷移する際に現在のURLを取得して、別のロジックに利用するケースです。

import { useHistory } from 'react-router-dom';

function NavigationExample() {
  const history = useHistory();

  const handleClick = () => {
    history.push('/new-page');
  };

  return (
    <div>
      <button onClick={handleClick}>Go to new page</button>
    </div>
  );
}

このように、useHistoryを使用して、ユーザーがクリックした際に新しいURLに遷移する処理を実装できます。

著者

Webエンジニア歴30年、フリーランスバックエンドエンジニア。

PHP歴約30年(Laravel 7年・FuelPHP 5年・CakePHP・自作FW)、
JavaScript歴約20年(React・Vue各4年)。
AWS(EC2 / CloudFront / RDS / API Gateway など)・
GCP(BigQuery)を使ったバックエンド開発を中心に、
複数の事業会社・受託案件でシステム設計から実装・運用まで担当しています。

PHPがバージョン4の時代から書いており、
Laravelが普及する前のフレームワーク乱立期も経験しています。
「昔はこう書いていたが今はこう」という変遷を肌で知っているエンジニアとして、
単なるコマンドの使い方だけでなく、なぜそうするのかの背景まで伝えることを意識して書いています。

このブログでは、実務で実際に詰まった箇所・調べたこと・気づいたことを
そのまま記事にしています。誰かの「詰まり」が解決するきっかけになれば幸いです。

千原 耕司をフォローする

役にたったと思ったら応援をお願いします m(._.)m

JavaScriptReact
スポンサーリンク
シェアする
千原 耕司をフォローする
タイトルとURLをコピーしました