他のものよりも何を使用するかについて、いくつかの混乱があるようです。
<Link to='/some/path'>
_<Redirect to='/some/path'/>
_history.Push('/some/path')
React/Routerを少しの間使用していますが、さまざまな投稿/回答がこれらをいつ使用するかについて異なることを言っており、時には他の人が言ったことと一致しません。だから、これについていくつかの説明が必要だと思う。
Link
とこの documentation について理解していることから:アプリケーションの周りで宣言型のアクセス可能なナビゲーションを提供します。
Redirect
とこの documentation について理解していることから:新しい場所に移動します。サーバー側のリダイレクト(HTTP 3xx)が行うように、新しい場所は履歴スタックの現在の場所を上書きします。
私が読んだすべての投稿は、ほとんどすべてのユーザーがRedirect
を使用してアプリケーション内を移動しているようで、この post のようにLink
を使用することを推奨する人はいません。
これで、history
は、履歴スタックトレースがあることを除いて、Link
およびRedirect
と同じことができます。
質問1:Link
対Redirect
を使用したい場合、他のユースケースは何ですか?
質問2:history
はユーザーをアプリ内の別の場所にルーティングできるため、履歴スタックのボーナスが追加されます。常に履歴オブジェクトを使用する必要がありますルーティングするとき?
質問3:アプリのoutsideをルーティングしたい場合、これを行う最適な方法は何ですか?アンカータグ、Window.location.href、リダイレクト、リンク、上記のどれでもない?
まず、このサイトを読むことをお勧めします。
https://reacttraining.com/react-router/web/api/BrowserRouter
React RouterのBrowserRouter
は履歴スタックを管理します。つまり、手動で変更する必要はほとんどありません。
しかし、あなたの質問に答えるには:
回答1:ほとんどすべてのユースケースでLink
またはNavLink
を使用します。 Redirect
は特定の状況で役立ちますが、例は、ユーザーが未定義のルートにアクセスしようとしたときに404ページがレンダリングされる場合です。 Redirect
は、ユーザーを404ルートから選択した新しいルートにリダイレクトし、履歴スタックの最後のエントリをリダイレクトされたルートに置き換えます。
これは、ユーザーがブラウザーの戻るボタンを押して404ルートに戻ることができないことを意味します。
Link
NavLink
およびRedirect
はすべて、内部でルーターの履歴APIを使用します。履歴の代わりにこれらのコンポーネントを使用すると、履歴APIの変更に対して安全です。未来。これらのコンポーネントを使用すると、コードが将来にわたって保証されます。
Answer 2:BrowserRouter
履歴スタックを維持します。一般的には、手動で更新することは避けたいと思います。できる。
回答3:外部反応リンクの例をいくつか示します。
<Route path='/external' component={() => window.location = 'https://external.com/path'}/>
<a href='https://external.com/path' target='_blank' rel='noopener noreferrer'>Regular Anchor tags work great</a>
target='_blank'
はリンクを新しいタブで開きますが、必ずrel='noopener noreferrer'
脆弱性 を防ぐため