⊗jsnxPmLtCMd 37 of 57 menu

Динамично преношење метаподатака из садржаја у NextJS

У претходној лекцији смо научили да постављамо метаподатке у садржају сајта. Овај метод је добар, али није увек примењив. Проблем је што се метаподаци странице могу мењати у зависности од параметара динамичке руте.

Погледајмо на примеру. Претпоставимо да имамо фајл са садржајем за приказ корисника по његовом id. Нека у овом фајлу постоји низ са корисницима:

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

Хајде да прикажемо податке корисника који одговара прослеђеном параметру:

export default function User({ params }) { return <> <h1>корисник {params.id}</h1> <p> име: {users[params.id]} </p> </>; }

Вратимо се сада на наш проблем. Пошто приказујемо различите кориснике, метаподаци за њих такође морају бити различити. Морамо их динамички формирати, у зависности од вредности параметра.

То се ради помоћу специјалне функције generateMetadata, коју морамо експортовати из наше компоненте:

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

У овој функцији су нам доступни параметри руте:

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

Хајде да враћамо потребне метаподатке у зависности од вредности параметра:

export const generateMetadata = ({params}) => { return { title: `Страница за корисника {params.id}`, description: `Опис за корисника "{users[params.id]}"`, }; };

Направите руту која обрађује адресе облика /post/:id, где уместо :id може бити било који број.

Нека је дат следећи низ:

let posts = [ { id: '1', title: 'објава 1', desc: 'опис за објаву 1', text: 'текст1 текст1 текст1 текст1 текст1 текст1 текст1 текст1', }, { id: '2', title: 'објава 2', desc: 'опис за објаву 2', text: 'текст2 текст2 текст2 текст2 текст2 текст2 текст2 текст2', }, { id: '3', title: 'објава 3', desc: 'опис за објаву 3', text: 'текст3 текст3 текст3 текст3 текст3 текст3 текст3 текст3', }, ]; export default function Post() { }

Направите тако да за задати id буде приказано HTML кôд потребне објаве, као и да се постави исправан наслов и мета-опис.

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