⊗jsnxPmLtCMd 37 of 57 menu

Dynaaminen metatietojen välittäminen sisällöstä NextJS:ssä

Edellisessä oppitunnissa opimme asettamaan metatiedot sivuston sisällössä. Tämä menetelmä on hyvä, mutta ei aina sovellettavissa. Asia on, että sivun metatiedot voivat muuttua dynaamisen reitin parametrista riippuen.

Katsotaanpa esimerkkiä. Oletetaan, että meillä on sisältötiedosto käyttäjän näyttämiseksi heidän id:nsä perusteella. Oletetaan, että tässä tiedostossa on taulukko käyttäjistä:

let users = [ 'user1', 'user2', 'user3', 'user4', 'user5', ];

Näytetään käyttäjän tiedot, jotka vastaavat annettua parametria:

export default function User({ params }) { return <> <h1>user {params.id}</h1> <p> name: {users[params.id]} </p> </>; }

Siirrytään nyt ongelmaamme. Koska näytämme eri käyttäjiä, niin heidän metatietonsa pitäisi olla erilaiset. Meidän täytyy muodostaa ne dynaamisesti, parametrin arvosta riippuen.

Tämä tehdään erityisellä funktiolla generateMetadata, joka meidän on eksportattava komponentistamme:

export const generateMetadata = () => { return { title: '', description: '', }; };

Tässä funktiossa meille ovat saatavilla reitin parametrit:

export const generateMetadata = ({params}) => { console.log(params); };

Palautetaan tarvittavat metatiedot parametrin arvosta riippuen:

export const generateMetadata = ({params}) => { return { title: `Page for user {params.id}`, description: `Description for user "{users[params.id]}"`, }; };

Tee reitti, joka käsittelee osoitteita muotoa /post/:id, jossa :id:n tilalla voi olla mikä tahansa numero.

Oletetaan seuraava taulukko:

let posts = [ { id: '1', title: 'post 1', desc: 'description for post 1', text: 'text1 text1 text1 text1 text1 text1 text1 text1', }, { id: '2', title: 'post 2', desc: 'description for post 2', text: 'text2 text2 text2 text2 text2 text2 text2 text2', }, { id: '3', title: 'post 3', desc: 'description for post 3', text: 'text3 text3 text3 text3 text3 text3 text3 text3', }, ]; export default function Post() { }

Tee niin, että annetun id:n perusteella näytetään tarvittavan postauksen mukaus, sekä asetetaan oikea otsikko ja metakuvaus.

Suomi
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Käytämme evästeitä verkkosivuston toiminnalle, analytiikalle ja personoinnille. Tietojen käsittely tapahtuu Tietosuojakäytännön mukaisesti.
hyväksy kaikki mukauta hylkää