Dynamiska rutter i NextJS
I NextJS kan man skapa dynamiska
rutter. Sådana rutter förutsätter
att en del av URL:en kan ha ett godtyckligt
värde. Som exempel tar vi adressen
/users/1, där istället för
ettorna kan vara vilket tal som helst,
som tekniskt sett motsvarar id för användaren
som vi vill visa.
I det här fallet behöver vi inte skapa
många mappar för varje möjligt
tal. Det räcker att deklarera den här delen
av adressen som dynamisk. I så fall
kommer alla förfrågningar av detta slag att
hanteras av en gemensam fil page.jsx.
För att skapa en dynamisk parameter måste namnet på motsvarande mapp sättas inom hakparenteser. I vårt fall blir det följande mappstruktur:
- /app/
- /users/
- /[id]/
- /users/
Låt oss skapa motsvarande komponent:
export default function User() {
return <p>
användare
</p>;
}
Den parameter vi har satt kommer
att lagras i ett speciellt objekt params.
Låt oss visa värdet på denna parameter:
export default function User({ params }) {
return <p>
användare {params.id}
</p>;
}
Skapa en rutt som hanterar adresser
av typen /city/:name, där istället för :name
kan vara vilken sträng som helst.
Skapa en rutt som hanterar adresser
av typen /show/:country/:city,
där istället för :country och :city
kan vara vilka strängar som helst.
Skapa en rutt som hanterar adresser
av typen /post/:id, där istället för :id
kan vara vilket tal som helst.
Låt följande array ges:
let posts = [
'inlägg1',
'inlägg2',
'inlägg3',
'inlägg4',
'inlägg5',
];
export default function Post() {
}
Gör så att beroende på
värdet på parametern id i komponentens
utskrift visas motsvarande inlägg.
Skapa en rutt som hanterar adresser
av typen /prod/:id, där istället för :id
kan vara vilket tal som helst.
Låt följande array ges:
let prods = [
{
id: 1,
name: 'prod1',
cost: 100,
},
{
id: 2,
name: 'prod2',
cost: 200,
},
{
id: 3,
name: 'prod3',
cost: 300,
},
];
export default function Prod() {
}
Gör så att beroende på
värdet på parametern id i komponentens
utskrift visas motsvarande produkt.