⊗jsnxPmLtCMd 37 of 57 menu

Dynamický prenos metadát z obsahu v NextJS

V predchádzajúcej lekcii sme sa naučili nastavovať metadáta v obsahu stránky. Tento spôsob je dobrý, ale nie vždy použiteľný. Problém je v tom, že metadáta stránky sa môžu meniť v závislosti od parametra dynamickej trasy.

Pozrime sa na príklad. Predpokladajme, že máme súbor s obsahom pre zobrazenie používateľa podľa jeho id. Nech v tomto súbore je pole s používateľmi:

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

Zobrazme dáta používateľa, ktorý zodpovedá odoslanému parametru:

export default function User({ params }) { return <> <h1>používateľ {params.id}</h1> <p> meno: {users[params.id]} </p> </>; }

Prejdime teraz k nášmu problému. Keďže zobrazujeme rôznych používateľov, aj metadáta pre nich by mali byť rôzne. Musíme ich vytvoriť dynamicky, v závislosti od hodnoty parametra.

To sa robí pomocou špeciálnej funkcie generateMetadata, ktorú musíme exportovať z nášho komponentu:

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

V tejto funkcii sú nám dostupné parametre trasy:

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

Vráťme potrebné metadáta v závislosti od hodnoty parametra:

export const generateMetadata = ({params}) => { return { title: `Stránka pre používateľa {params.id}`, description: `Popis pre používateľa "{users[params.id]}"`, }; };

Vytvorte trasu, ktorá spracováva adresy tvaru /post/:id, kde namiesto :id môže byť ľubovoľné číslo.

Nech je dané nasledujúce pole:

let posts = [ { id: '1', title: 'príspevok 1', desc: 'popis pre príspevok 1', text: 'text1 text1 text1 text1 text1 text1 text1 text1', }, { id: '2', title: 'príspevok 2', desc: 'popis pre príspevok 2', text: 'text2 text2 text2 text2 text2 text2 text2 text2', }, { id: '3', title: 'príspevok 3', desc: 'popis pre príspevok 3', text: 'text3 text3 text3 text3 text3 text3 text3 text3', }, ]; export default function Post() { }

Zabezpečte, aby pre zadané id bol vykreslený obsah príslušného príspevku, a zároveň bol nastavený správny titulok a meta popis.

Slovenčina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť