Routes dynamiques dans NextJS
Dans NextJS, il est possible de créer des routes dynamiques.
De telles routes supposent
qu'une partie de l'URL peut avoir une valeur
arbitraire. Prenons par exemple l'adresse
/users/1, dans laquelle le chiffre 1
peut être remplacé par n'importe quel nombre,
correspondant techniquement à l'id de l'utilisateur
que nous souhaitons afficher.
Dans ce cas, nous n'avons pas besoin de créer
de multiples dossiers pour chaque nombre possible.
Il suffit de déclarer cette partie de l'adresse
comme dynamique. Dans ce cas, toutes les requêtes
de ce type seront traitées par un fichier commun page.jsx.
Pour créer un paramètre dynamique, il faut mettre le nom du dossier correspondant entre crochets. Dans notre cas, cela donnera la structure de dossiers suivante :
- /app/
- /users/
- /[id]/
- /users/
Créons le composant correspondant :
export default function User() {
return <p>
user
</p>;
}
Le paramètre que nous avons défini sera
stocker dans un objet spécial params.
Afficher la valeur de ce paramètre :
export default function User({ params }) {
return <p>
user {params.id}
</p>;
}
Créez une route qui traite les adresses
de type /city/:name, où :name
peut être remplacé par n'importe quelle chaîne de caractères.
Créez une route qui traite les adresses
de type /show/:country/:city,
où :country et :city
peuvent être remplacés par n'importe quelles chaînes de caractères.
Créez une route qui traite les adresses
de type /post/:id, où :id
peut être remplacé par n'importe quel nombre.
Soit le tableau suivant :
let posts = [
'post1',
'post2',
'post3',
'post4',
'post5',
];
export default function Post() {
}
Faites en sorte qu'en fonction de la
valeur du paramètre id, le post correspondant
soit affiché dans le rendu du composant.
Créez une route qui traite les adresses
de type /prod/:id, où :id
peut être remplacé par n'importe quel nombre.
Soit le tableau suivant :
let prods = [
{
id: 1,
name: 'prod1',
cost: 100,
},
{
id: 2,
name: 'prod2',
cost: 200,
},
{
id: 3,
name: 'prod3',
cost: 300,
},
];
export default function Prod() {
}
Faites en sorte qu'en fonction de la
valeur du paramètre id, le produit correspondant
soit affiché dans le rendu du composant.