useRouter
Le hook useRouter
vous permet de changer programmatiquement les routes dans les Composants Client.
Recommandation : Utilisez le composant
<Link>
pour la navigation, sauf si vous avez un besoin spécifique nécessitant l'utilisation deuseRouter
.
useRouter()
router.push(href: string, { scroll: boolean })
: Effectue une navigation côté client vers la route fournie. Ajoute une nouvelle entrée dans la pile d'historique du navigateur.router.replace(href: string, { scroll: boolean })
: Effectue une navigation côté client vers la route fournie sans ajouter de nouvelle entrée dans la pile d'historique du navigateur.router.refresh()
: Rafraîchit la route actuelle. Effectue une nouvelle requête vers le serveur, récupère les données et re-rend les Composants Serveur. Le client fusionnera la nouvelle charge utile du Composant Serveur React sans perdre l'état côté client React (par exempleuseState
) ou l'état du navigateur (par exemple la position de défilement).router.prefetch(href: string)
: Précharge la route fournie pour des transitions côté client plus rapides.router.back()
: Navigue vers la route précédente dans la pile d'historique du navigateur.router.forward()
: Navigue vers la page suivante dans la pile d'historique du navigateur.
Bon à savoir :
- Vous ne devez pas envoyer d'URL non fiables ou non assainies à
router.push
ourouter.replace
, car cela peut exposer votre site à des vulnérabilités de cross-site scripting (XSS). Par exemple, les URLjavascript:
envoyées àrouter.push
ourouter.replace
seront exécutées dans le contexte de votre page.- Le composant
<Link>
précharge automatiquement les routes lorsqu'elles deviennent visibles dans la fenêtre d'affichage.refresh()
pourrait produire le même résultat si les requêtes fetch sont mises en cache. D'autres API dynamiques commecookies
etheaders
pourraient également modifier la réponse.
Migration depuis next/router
- Le hook
useRouter
doit être importé depuisnext/navigation
et nonnext/router
lors de l'utilisation du routeur App. - La chaîne
pathname
a été supprimée et remplacée parusePathname()
. - L'objet
query
a été supprimé et remplacé paruseSearchParams()
. router.events
a été remplacé. Voir ci-dessous.
Consultez le guide complet de migration.
Exemples
Événements du routeur
Vous pouvez écouter les changements de page en combinant d'autres hooks de Composant Client comme usePathname
et useSearchParams
.
Qui peut être importé dans une mise en page.
Bon à savoir :
<NavigationEvents>
est encapsulé dans une limiteSuspense
caruseSearchParams()
provoque un rendu côté client jusqu'à la limiteSuspense
la plus proche pendant le rendu statique. En savoir plus.
Désactiver le défilement vers le haut
Par défaut, Next.js défile vers le haut de la page lors de la navigation vers une nouvelle route. Vous pouvez désactiver ce comportement en passant scroll: false
à router.push()
ou router.replace()
.
Historique des versions
Version | Changements |
---|---|
v13.0.0 | Introduction de useRouter depuis next/navigation . |