Liaison et Navigation
Le routeur Next.js vous permet d'effectuer des transitions de route côté client entre les pages, similaire à une application monopage.
Un composant React appelé Link
est fourni pour effectuer cette transition de route côté client.
L'exemple ci-dessus utilise plusieurs liens. Chacun mappe un chemin (href
) à une page connue :
/
→pages/index.js
/about
→pages/about.js
/blog/hello-world
→pages/blog/[slug].js
Tout <Link />
dans la zone visible (initialement ou via défilement) sera préchargé par défaut (y compris les données correspondantes) pour les pages utilisant la Génération Statique. Les données correspondantes pour les routes rendues côté serveur sont récupérées uniquement lorsque le <Link />
est cliqué.
Liaison vers des chemins dynamiques
Vous pouvez également utiliser l'interpolation pour créer le chemin, ce qui est pratique pour les segments de route dynamiques. Par exemple, pour afficher une liste d'articles qui ont été passés au composant en tant que prop :
encodeURIComponent
est utilisé dans l'exemple pour garder le chemin compatible utf-8.
Alternativement, en utilisant un objet URL :
Maintenant, au lieu d'utiliser l'interpolation pour créer le chemin, nous utilisons un objet URL dans href
où :
pathname
est le nom de la page dans le répertoirepages
./blog/[slug]
dans ce cas.query
est un objet avec le segment dynamique.slug
dans ce cas.
Injection du routeur
Pour accéder à l'objet router
dans un composant React, vous pouvez utiliser useRouter
ou withRouter
.
En général, nous recommandons d'utiliser useRouter
.
Navigation Impérative
next/link
devrait couvrir la plupart de vos besoins en matière de routage, mais vous pouvez également effectuer des navigations côté client sans lui, consultez la documentation pour next/router
.
L'exemple suivant montre comment effectuer des navigations de page de base avec useRouter
:
Routage Superficiel (Shallow Routing)
Exemples
Le routage superficiel vous permet de changer l'URL sans exécuter à nouveau les méthodes de récupération de données, ce qui inclut getServerSideProps
, getStaticProps
, et getInitialProps
.
Vous recevrez le pathname
mis à jour et la query
via l'objet router
(ajouté par useRouter
ou withRouter
), sans perdre l'état.
Pour activer le routage superficiel, définissez l'option shallow
sur true
. Considérez l'exemple suivant :
L'URL sera mise à jour vers /?counter=10
et la page ne sera pas remplacée, seul l'état de la route est modifié.
Vous pouvez également surveiller les changements d'URL via componentDidUpdate
comme montré ci-dessous :
Mises en garde
Le routage superficiel ne fonctionne que pour les changements d'URL dans la page actuelle. Par exemple, supposons que nous ayons une autre page appelée pages/about.js
, et que vous exécutiez ceci :
Comme il s'agit d'une nouvelle page, elle déchargera la page actuelle, chargera la nouvelle et attendra la récupération des données même si nous avons demandé un routage superficiel.
Lorsque le routage superficiel est utilisé avec un middleware, il ne garantit pas que la nouvelle page correspond à la page actuelle comme cela était fait auparavant sans middleware. Cela est dû au fait que le middleware peut réécrire dynamiquement et ne peut pas être vérifié côté client sans une récupération de données qui est ignorée avec le routage superficiel, donc un changement de route superficiel doit toujours être traité comme superficiel.
Routes dynamiques
Les routes dynamiques sont des pages qui vous permettent d'ajouter des paramètres personnalisés à vos URL. Commencez à créer des routes dynamiques et apprenez-en plus ici.
Application personnalisée
Contrôlez l'initialisation des pages et ajoutez une mise en page persistante pour toutes les pages en remplaçant le composant App par défaut utilisé par Next.js.