⊗jsnxPmNvDL 48 of 57 menu

NextJS'те динамикалык шилтемелерди генерациялоо

Бизде колдонуучулардын маалыматтары бар кандайдыр бир файл бар деп коёлу:

export default users = [ { id: 1, name: 'name1', surn: 'surn1', }, { id: 2, name: 'name2', surn: 'surn2', }, { id: 3, name: 'name3', surn: 'surn3', }, ];

Келгиле эки компонент жасайлы. Биринчи компонент колдонуучулардын тизмесин алардын деталдуу сыпаттамаларына шилтемелер менен көрсөтөт. Экинчи компонент ошол деталдуу сыпаттаманы чыгарат.

URL /users/list боюнча бардык колдонуучулардын тизмеси көрсөтүлсүн, ал эми URL /users/show/:id боюнча - конкреттүү колдонуучу анын айдиси боюнча.

Бул үчүн төмөнкүдөй файлдык түзүлүшүн жасайбыз:

  • /app/
    • /users/
      • users.js
      • /list/
        • page.jsx
      • /show/[id]/
        • page.jsx

Биринчи компонентти түзөлү, анда биз шилтемелерди цикл ичинде динамикалык түрдө генерациялайбыз, аларга ар бир колдонуучунун id маанисин коюп:

import users from '../users.js'; import Link from 'next/link'; export default function List() { let list = users.map(user => { return <li> <Link href={`/users/show/${user.id}`}> {user.name} </Link> </li>; }); return <ul> {list} </ul>; }

Анын id боюнча белгилүү бир колдонуучуну чыгаруу үчүн компонентти жасайлы:

import users from '../../users.js'; export default function User({params}) { let user = users[params.id]; return <div> <span>{user.id}</span> <span>{user.name}</span> <span>{user.surn}</span> </div>; }

Төмөнкү массив берилген:

let prods = [ { id: 1, name: 'prod1', cost: 100, desc: 'desc1', }, { id: 2, name: 'prod2', cost: 200, desc: 'desc2', }, { id: 3, name: 'prod3', cost: 300, desc: 'desc3', }, ];

Эки компонент жасаңыз. Биринчиси продукттардын тизмесин продукттун толук сыпаттамасына шилтемелер түрүндө көрсөтсүн. Экинчи компонент продукттун деталдуу сыпаттамасын көрсөтсүн.

URL'ге жок продукттун айдиси берилсе, экранда 404 катасы көрсөтүлүшү үчүн кылыңыз.

Кыргызча
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 файлдарын колдонобуз. Маалыматтарды иштетүү Маалыматты коргоо саясаты боюнча жүргүзүлөт.
баарын кабыл алуу ыңгайлаштыруу четке кагуу