ReactルーターのuseHistory
を使用してルート間でプログラム的にナビゲートするには、最初にreact-router-dom
ライブラリからフックをインポートしてから、コンポーネント内で使用する必要があります。 NavigationにuseHistory
使用する方法に関する段階的なガイドを次に示します。
Import useHistory
:コンポーネントファイルの先頭にあるreact-router-dom
パッケージからuseHistory
インポートすることから始めます。
<code class="javascript">import { useHistory } from 'react-router-dom';</code>
初期化useHistory
:機能コンポーネント内で、 useHistory
を呼び出して履歴オブジェクトを取得します。
<code class="javascript">const history = useHistory();</code>
push
方法でナビゲート:履歴オブジェクトのpush
メソッドを使用して、新しいルートに移動します。たとえば、 /about
に移動するには、次のことを行います。
<code class="javascript">history.push('/about');</code>
現在のエントリをreplace
方法で置き換える方法:新しいルートに移動するが、履歴スタックの現在のエントリを交換する場合(バックボタンが前のページに戻らない)、代わりにreplace
方法を使用します。
<code class="javascript">history.replace('/about');</code>
前方に進みます: goBack
、 goForward
、およびgo
Methodを使用して、履歴スタックの特定のポイントに戻る、前方に移動することもできます。
<code class="javascript">history.goBack(); // Go back to the previous page history.goForward(); // Go forward to the next page history.go(-2); // Go back two entries in the history stack</code>
この方法でuseHistory
使用すると、Reactアプリケーション内でプログラムでナビゲーションを制御できます。
useHistory
はReactのプログラムナビゲーションのための強力なツールですが、注意すべき一般的な落とし穴がいくつかあります。
useHistory
非推奨になり、 useNavigate
に置き換えられています。 Reactルーターの新しいバージョンでuseHistory
使用すると、エラーが発生します。使用しているReactルーターのバージョンを常に確認し、適切なフックを使用してください。useHistory
に依存しすぎると、アプリケーションのルーティング構造の設計の選択が不十分であることを示している可能性があります。可能であれば、 Link
とNavLink
コンポーネントを使用して宣言的なルーティングを使用して、ナビゲーションを簡単に保守可能に保ちます。useHistory
使用し、それを介して状態を管理しようとすると、混乱につながる可能性があります。アプリケーションにおけるナビゲーション履歴と国家管理の分離を理解してください。状態については、Context、Redux、MobxなどのReactの状態管理ソリューションを使用することを検討してください。replace
の誤用: replace
不必要に使用すると、ユーザーが戻るボタンを使用して以前に訪れたページに移動し、潜在的に混乱する可能性があります。具体的な理由がある場合にのみreplace
使用してください。 useHistory
を使用してルート間を通過することは、 state
プロパティを使用してオブジェクトをpush
またはreplace
方法に渡すことで実現できます。これがあなたがそれを行う方法です:
通過状態:新しいルートに移動するときは、状態オブジェクトを含めることができます。例えば:
<code class="javascript">const history = useHistory(); history.push({ pathname: '/profile', state: { id: 123, name: 'John Doe' } });</code>
状態へのアクセス: /profile
ルートでレンダリングされたコンポーネントでは、 react-router-dom
からのuseLocation
を使用して状態にアクセスできます。
<code class="javascript">import { useLocation } from 'react-router-dom'; function Profile() { const location = useLocation(); const { id, name } = location.state || {}; return ( <div> <h1>Profile</h1> <p>ID: {id}</p> <p>Name: {name}</p> </div> ); }</code>
これらの手順に従うことにより、 useHistory
を使用してルート間をナビゲートするときに、状態を効果的に通過および利用できます。
useHistory
とuseNavigate
どちらもプログラムナビゲーションを可能にするReactルーターのフックですが、それらはライブラリの異なるバージョンに属し、いくつかの重要な違いがあります。
バージョンの互換性:
useHistory
React Router V5からのものであり、React Router V6でuseNavigate
を支持して非推奨されています。useNavigate
ReactルーターV6のプログラムナビゲーションの現在の推奨フックです。構文と使用法:
useHistory
使用すると、通常、 push
、 replace
、 goBack
、 goForward
、 go
などの方法を使用します。useNavigate
使用すると、フックは、同じ結果を達成するためにパスとオプションで呼び出す関数( navigate
)を返します。たとえば、 navigate('/about')
またはnavigate('/about', { replace: true })
。通過状態:
useHistory
では、オブジェクトを渡して、 state
プロパティをpush
たりreplace
。useNavigate
使用すると、 navigate
を呼び出すときにオプションとしてstate
オブジェクトを渡すことができます。<code class="javascript">// useHistory history.push({ pathname: '/profile', state: { id: 123 } }); // useNavigate navigate('/profile', { state: { id: 123 } });</code>
相対ナビゲーション:
useNavigate
、相対パスナビゲーションをサポートし、兄弟または親ルートを使用してuseHistory
ゲートすることができます..
前後のナビゲーション:
useHistory
、 goBack
やgoForward
などの方法を直接提供します。useNavigate
使用すると、バック用にnavigate(-1)
を呼び出し、前方にnavigate(1)
ことで同じ効果を達成できます。これらの違いを理解することは、プロジェクトが使用しているReactルーターのバージョンに応じて、使用するフックを決定するときに重要です。
以上がUsehistoryを使用して、ルート間でプログラムでどのようにナビゲートしますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。