Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Building a Collapsible Admin Sidebar with React Router + useLocation (Pro Patterns)

2025年09月21日に「Dev.to」が公開したITニュース「Building a Collapsible Admin Sidebar with React Router + useLocation (Pro Patterns)」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

React RouterのuseLocationフックを活用し、折りたたみ可能な管理者サイドバーの構築方法を紹介。現在のURLを読み取り、アクティブなメニュー項目をハイライト表示する機能や、モダンなアイコン、レスポンシブデザインの実装について解説する。

ITニュース解説

このニュース記事は、現代のWebアプリケーション、特に管理画面のようなダッシュボードで利用される、柔軟で使いやすいナビゲーションメニュー、具体的には「折りたたみ可能なサイドバー」をReactという技術とReact Routerというライブラリを使ってどのように実装するかを解説している。システムエンジニアを目指す初心者にとって、Webアプリケーションの基本要素であるナビゲーションの作り方を実践的に学ぶ良い機会になるだろう。

現代のダッシュボードは、ただ情報を表示するだけでなく、ユーザーが現在どこにいるのかを明確に示し、状況に応じて動的に変化するナビゲーションが求められる。この記事で中心となるのは、React Routerというライブラリが提供するuseLocationという特別な機能(フックと呼ばれる)だ。このuseLocationフックを使うことで、Webページの現在のURL(アドレスバーに表示される情報)をプログラムで読み取ることが可能になる。これは、サイドバー内のメニュー項目で「今見ているページがどこか」をハイライト表示するといった、UI(ユーザーインターフェース)の表示を決定する上で非常に重要な役割を果たす。

useLocationフックは、現在のURLに関する様々な情報を持ったオブジェクトを提供する。具体的には、URLのパス部分(pathname)、クエリパラメータ(search)、ハッシュ値(hash)といった要素が含まれる。これらの情報の中で、特にpathnameは、現在のページがどのURLパスに該当するかを判断するために頻繁に利用される。例えば、管理画面で「ダッシュボード」のページを表示しているなら/admin、特定の製品一覧ページなら/admin/productsといった形で、現在のパスをpathnameから取得できる。この情報を使うことで、サイドバーで現在アクセスしているメニュー項目を青色にハイライトするといった、視覚的なフィードバックをユーザーに提供できるようになるのだ。また、特定のサブパス(例えば/admin/products/123のような、特定の製品の詳細ページ)にアクセスしているかどうかを判断したり、ページ遷移の履歴を記録して分析に活用したりといった高度な使い方も可能である。

記事では、実際に「管理画面サイドバー」を構築する具体的な方法が示されている。このサイドバーは、いくつかの特徴を持っている。

一つ目は、折りたたみ機能だ。これは、画面のスペースを有効活用するための機能で、サイドバーの幅を広げたり狭めたりできる。isCollapsedという状態(サイドバーが折りたたまれているかどうかを示す真偽値)とonToggleという関数(折りたたみ状態を切り替えるための関数)を使って実現されている。ユーザーがボタンをクリックすると、サイドバーの幅がw-64(広い状態)からw-18(狭い状態)へとスムーズに変化し、同時に折りたたみの矢印アイコンも左右に切り替わる。サイドバーが折りたたまれている間は、メニュー項目のラベル(テキスト)は非表示になり、アイコンだけが表示されるため、画面がすっきりする。

二つ目は、メニュー項目の表示とアクティブ状態のハイライトだ。サイドバーのメニューはmenuItemsという配列で定義されており、それぞれの項目にはアイコン、ラベル、そしてリンク先のURLが設定されている。この配列を元に、各メニュー項目がリストとして表示される。ここでuseLocationが再び登場する。isActiveRouteというカスタム関数が定義されており、現在のページのpathnameと各メニュー項目のリンク先URLを比較し、その項目が現在アクティブであるかを判定する。例えば、/admin/products/123のような特定の製品詳細ページにいる場合でも、isActiveRoute関数は/admin/productsの項目をアクティブと判断するように設計されている。アクティブと判定されたメニュー項目には、背景色を青くしたり、文字色を変えたり、右側に青い境界線を付けたりといった特別なスタイルが適用され、ユーザーは一目で現在地を把握できる。これにより、ナビゲーションの使いやすさが格段に向上する。

三つ目は、モダンなデザイン要素だ。サイドバーにはLucide Reactというライブラリから提供されるアイコンが使われている。これらのアイコンは見た目が統一されており、サイト全体の印象をモダンでプロフェッショナルなものにする。また、見た目のデザインやレイアウトはTailwind CSSというユーティリティファーストのCSSフレームワークが使われている。bg-whitep-4flexといったクラス名(HTML要素に付与する目印)を直接HTMLに記述することで、背景色、パディング(内側の余白)、配置といった様々なスタイルを簡単に設定できるのが特徴だ。これにより、CSSファイルを大量に書かなくても、デザインを素早く適用できる。

この記事で示されている技術要素をまとめると、以下のようになる。useLocationフックは現在のURLを読み取り、アクティブな状態を決定する。isActiveRoute()関数は、厳密なURL一致だけでなく、より広範なパスにも対応するアクティブ判定ロジックを実装する。Lucide Iconsは、軽量で統一感のあるアイコンシステムを提供する。折りたたみ可能なサイドバーは、ユーザーエクスペリエンス(UX)を向上させ、画面のスペースを節約する。そしてTailwind CSSは、余白、境界線、ホバー時の動作、アニメーションといった視覚的なスタイリングを効率的に扱う。

さらに、この記事では応用的な開発パターンについても触れている。例えば、サイドバーの折りたたみ状態をユーザーが記憶できるよう、localStorage(ブラウザに情報を保存する機能)やReactのコンテキスト(複数のコンポーネント間でデータを共有する仕組み)を利用して状態を永続化する方法。ユーザーの役割や権限に応じて表示するメニュー項目を切り替える「ロールベースメニュー」。現在のURLパスから「パンくずリスト」(現在地までの経路を示すナビゲーション)を自動生成する方法。そして、useLocationフックとuseEffectフック(コンポーネントのライフサイクルで特定の処理を実行するフック)を組み合わせて、ページ遷移のたびにイベントを記録し、アクセス解析に利用する方法など、より高度な機能の実装アイデアが紹介されている。

このニュース記事で解説されたアプローチは、いくつかのフックと綿密な設計によって、応答性が高く、折りたたみ可能な管理画面サイドバーを構築できることを示している。現在のページを認識してアクティブな項目をハイライト表示する機能や、メニュー項目を効率的に管理できる拡張性の高いパターンは、ダッシュボードのナビゲーションをより整理され、予測可能で、将来にわたって使いやすいものにするための強力な基盤となる。システムエンジニアを目指す上で、このようなモダンなWeb開発の知識と実践的なスキルを身につけることは、非常に価値があるだろう。

関連コンテンツ

関連IT用語