⊗jsnxPmLtCMd 37 of 57 menu

Дынамічная перадача метададзеных з кантэнту ў NextJS

У папярэднім уроке мы навучыліся задаваць метададзеныя ў кантэнце сайта. Гэты спосаб добры, але ўжывальны не заўсёды. Справа ў тым, што метададзеныя старонкі могуць мяняцца ў залежнасці ад параметра дынамічнага роўта.

Давайце паглядзім на прыкладзе. Хай у нас ёсць файл з кантэнтам для паказу карыстальніка па яго id. Хай у гэтым файле ёсць масіў з карыстальнікамі:

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

Давайце вывядзём дадзеныя карыстальніка, які адпавядае перададзенаму параметру:

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

Перайдзем цяпер да нашай праблемы. Так як мы паказваем розных карыстальнікаў, то і метададзеныя для іх павінны быць рознымі. Мы павінны фармаваць іх дынамічна, у залежнасці ад значэння параметра.

Гэта робіцца з дапамогай спецыяльнай функцыі generateMetadata, якую мы павінны экспартаваць з нашага кампанента:

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

У гэтай функцыі нам даступныя параметры роўта:

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

Давайце будзем аддаваць патрэбныя метададзеныя ў залежнасці ад значэння параметра:

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

Зрабіце роўт, які апрацоўвае адрасы выгляду /post/:id, дзе замест :id можа быць любы лік.

Хай дадзены наступны масіў:

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() { }

Зрабіце так, каб па зададзеным айдзі выводзілася верстка патрэбнага посту, а таксама ўсталёўваўся правільны тайтл і метаапісанне.

Беларуская
AfrikaansAzərbaycanБългарскиবাংলাČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Мы выкарыстоўваем cookie для працы сайта, аналітыкі і персаналізацыі. Апрацоўка дадзеных адбываецца згодна Палітыкай канфідэнцыяльнасці.
прыняць усе наладзіць адхіліць