1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

React Routerはなぜ必要なのか

Posted at

はじめに

筆者は執筆時点でReactもReact Routerも触ったことがないエンジニアです。
とある機会でReact Routerを触ることになったのですが、
現状の理解度は
「React?Vueみたいなもんよな」「ReactとReact Routerと何が違うん」「そもそもReact Routerはなぜ生まれたん」程度のものなので、開発に先立って、理解を深めるために記事を書いてみます。

Reactでは何が問題だったのか

  • Reactはあくまで「UIを構築するためのライブラリ」であり、標準ではURLを管理する機能を持たない。
  • そのため、Reactだけで画面の切り替えを実装すると、以下のような問題が発生する。
    • 画面遷移してもURLが変わらない。
    • 「戻る」ボタンが効かない。
    • 特定のページを開いていても、URLがトップページのままなので、ブックマーク・共有ができない。

React Routerでどう解決できるのか

  • UIとURLを同期する・特定のURL(例: /about)にアクセスした時、対応するコンポーネントを表示できる。
  • 履歴を管理する。「戻る・進む」ボタンでReact上の画面遷移を制御できる。

React Routerの仕組み

1. History API で URL の変化を監視・操作する

ブラウザ標準の History API (pushState, replaceState) を使用します。 通常、JavaScriptで window.location.href を書き換えるとページのリロードが走るが、pushState を使うとリロードを発生させずに URLだけ変更できます。

※History API について

2. URL をルート定義と照合し、最適な Route を選ぶ

あらかじめ解析したルートツリーに対し、
現在の URL をスコア付きでマッチングして一番合う Route を決める。

3. マッチ結果を React コンポーネントへ流し、再レンダーさせる

マッチしたルートの情報を元に、該当するコンポーネントが描画される。これにより URLの変化 → UIの切り替え が実現される。

参考記事

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?