HashRouter vs BrowserRouter


TL; DR


BrowserRouter


A that uses the HTML5 history API (pushState, replaceState and the popstate event) to keep your UI in sync with the URL.
HTML 5 history APIを使用してUI(画面)とURLを通気状態に保つルータ.
(pushState、replaceState、popstateイベント)
MDN history API

HashRouter


A that uses the hash portion of the URL (i.e. window.location.hash) to keep your UI in sync with the URL.
URLのhash部分(例えばwindow.location.hash)を使用して、UI(画面)をURLと同期させるルータ.
ここで重要なのはhash historyがlocation.keyまたはlocation.stateをサポートしていないことです.
したがって、react-routerの公式文書は<BrowserStory>を使用することを推奨します.
react router documentation

Conclusion


ルータとは、クライアントパス(リクエストパス)を表示し、そのリクエストを処理できる場所です.HashRouterよりも、BrowserRouterの方がおすすめです.

ルーターとは?


ルータとは、クライアントパス(リクエストパス)を表示し、そのリクエストを処理できる場所です.

BrowserRouter


jsを使ってURLを変更することは古くから可能です.
document.location.href = 'https://developer.mozilla.org/';
上記の操作を行うと、当然ページが再ロードされます.従って、上記の方法はSPAには不向きな方法である.
(window.location.hashでは、再ロードせずに変更を行うことができますが、ハッシュ値のみを変更するので、これは適切な方法ではありません.)
ただし、History APIを使用すると、再ロードせずに変更できます.
window.history.pushState({}, null, 'https://developer.mozilla.org/')
pushState
しかし、上記の方式にも明確な限界がある.
提供されるURLは、現在のページのソースと同じである必要があります(origin).

Advantages of HashRouter


最大の利点は、ユーザが通常の(hashなし)URLを表示できることである.
またSEO面でも有利です.

Disadvantages of HashRouter

BrowserRouterには多くの利点がありますが、追加の構成が必要であり、コストがかかります.(サーバを構築し、要求に常に応答する)

HashRouter

#は長い間URLの一部として使われてきた.
(ex. https://developer.mozilla.org/en-US/docs/Web/API/URL#properties )
<h2 id="properties">
  <a href="#properties" title="Permalink to Properties">Properties</a>
</h2>
上記のURLは、ブラウザがDOM treeでid="properties"を検索することを可能にする.
次に、ブラウザがその場所にスクロールします.上の要素が見つかるからです.
またURLのhash(#)にはもう一つの特性があり、inspectorでチェックすると

ブラウザが#propertiesをサーバに送信していないことがわかります.
これはブラウザで説明しjsでアクセスできます.
console.log(window.location.hash);
// #properties
上記の特徴は、SPAを作成する際に有利である可能性があります.
これは、1つのHTMLでjsを使用してURLにページを生成するためです.
上記の特徴はcreate react appで生成されたアプリケーションで簡単に見つけることができます.

サーバ応答<div id="root"></div>およびjsファイルが表示されます.
したがって、サーバがユーザーが接続する正しいパスに関する情報を受信していない場合、これは非常に有用である可能性があります.

Advantages of HashRouter


最大の利点は、ブラウザがルーティング情報をサーバに送信しないことです.
そのため、構成は非常に簡単です.

Disadvantages of HashRouter


欠点は、ユーザーが慣れていないURLを体験する必要があることです.
(URLにhash(#)が含まれているので)
しかもSEO方面にも良くない
関連記事

Conclusion


だから結論は何ですか.まず結論から、できればBrowserRouterを使います.
ただし、単純なSPAと静的ページを作成することを目的としている場合は、HashRouterで十分です.
自分の目的に合ったルーターを選ぶ.
reference
React router documentation
Comparing the HashRouter and the BrowserRouter in React applications
[React Router]react-rrouter-domにおけるHashRouterとBrowserRouterの違い