Pour naviguer par programmation entre les routes en utilisant useHistory
dans le routeur React, vous devez d'abord importer le crochet de la bibliothèque react-router-dom
, puis l'utiliser dans votre composant. Voici un guide étape par étape sur la façon d'utiliser useHistory
pour la navigation:
Importer useHistory
: commencez par importer useHistory
depuis le package react-router-dom
au début de votre fichier de composant.
<code class="javascript">import { useHistory } from 'react-router-dom';</code>
Initialiser useHistory
: à l'intérieur de votre composant fonctionnel, appelez useHistory
pour obtenir l'objet History.
<code class="javascript">const history = useHistory();</code>
Naviguez avec la méthode push
: utilisez la méthode push
de l'objet historique pour accéder à un nouvel itinéraire. Par exemple, pour accéder à la page /about
, vous feriez:
<code class="javascript">history.push('/about');</code>
Remplacer l'entrée actuelle par la méthode replace
: si vous souhaitez naviguer vers un nouvel itinéraire mais remplacer l'entrée actuelle dans la pile d'historique (afin que le bouton arrière ne revienne pas à la page précédente), utilisez plutôt la méthode replace
:
<code class="javascript">history.replace('/about');</code>
Retournez et avancez : vous pouvez également utiliser des méthodes goBack
, goForward
et go
pour revenir en arrière, en avant ou vers un point spécifique de la pile d'historique.
<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>
L'utilisation useHistory
de cette manière vous permet de contrôler la navigation par programme dans votre application React.
Bien que useHistory
soit un outil puissant pour la navigation programmatique dans React, il existe plusieurs pièges communs à connaître:
useHistory
a été obsolète et remplacé par useNavigate
. L'utilisation useHistory
dans les versions plus récentes du routeur React entraînera des erreurs. Vérifiez toujours la version du routeur React que vous utilisez et utilisez le crochet approprié.useHistory
de la navigation peut indiquer de mauvais choix de conception dans la structure de routage de votre application. Essayez d'utiliser le routage déclaratif dans la mesure du possible, en utilisant des composants Link
et NavLink
, pour maintenir la navigation simple et maintenable.useHistory
pour la navigation et d'essayer de gérer l'état à travers cela peut entraîner une confusion. Comprendre la séparation entre l'historique de la navigation et la gestion de l'État dans votre application. Pour l'état, envisagez d'utiliser les solutions de gestion d'état de React comme Context, Redux ou MOBX.replace
: Utilisation replace
inutilement peut empêcher les utilisateurs d'utiliser le bouton de retour pour accéder à une page précédemment visitée, potentiellement les confondre. Utilisez replace
uniquement lorsque vous avez une raison spécifique de le faire. Le passage de l'état entre les itinéraires à l'aide useHistory
peut être réalisé en passant un objet avec une propriété state
aux méthodes de push
ou replace
. Voici comment vous pouvez le faire:
État de passage : lors de la navigation vers un nouvel itinéraire, vous pouvez inclure un objet d'état. Par exemple:
<code class="javascript">const history = useHistory(); history.push({ pathname: '/profile', state: { id: 123, name: 'John Doe' } });</code>
Accès à l'état : Dans le composant rendu sur la route /profile
, vous pouvez accéder à l'état à l'aide de useLocation
à partir de react-router-dom
.
<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>
En suivant ces étapes, vous pouvez efficacement passer et utiliser l'état lors de la navigation entre les itinéraires en utilisant useHistory
.
useHistory
et useNavigate
sont tous deux des crochets du routeur React qui permettent une navigation programmatique, mais ils appartiennent à différentes versions de la bibliothèque et ont des différences clés:
Compatibilité de la version :
useHistory
est issu du routeur React V5 et a été déprécié en faveur de useNavigate
dans React Router V6.useNavigate
est le crochet recommandé actuel pour la navigation programmatique dans React Router V6.Syntaxe et utilisation :
useHistory
, vous utilisez généralement des méthodes comme push
, replace
, goBack
, goForward
et go
.useNavigate
, le crochet renvoie une fonction ( navigate
) que vous appelez avec un chemin et des options pour obtenir les mêmes résultats. Par exemple, navigate('/about')
ou navigate('/about', { replace: true })
.État de passage :
useHistory
, vous passez un objet pour push
ou replace
par une propriété state
.useNavigate
, vous pouvez transmettre un objet state
comme une option lors de l'appel navigate
.<code class="javascript">// useHistory history.push({ pathname: '/profile', state: { id: 123 } }); // useNavigate navigate('/profile', { state: { id: 123 } });</code>
Navigation relative :
useNavigate
prend en charge la navigation par chemin relative, vous permettant de naviguer vers les frères et les routes parentaux en utilisant ..
dans la chaîne de chemin, qui n'est pas prise en charge dans useHistory
.Navigation arrière et avant :
useHistory
fournit directement des méthodes comme goBack
et goForward
.useNavigate
, vous pouvez obtenir le même effet en appelant navigate(-1)
pour le dos et navigate(1)
pour l'avant.La compréhension de ces différences est cruciale lors de la décision de quel crochet à utiliser, selon la version du routeur React que votre projet utilise.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!