⊗jsrtPmRtNR 27 of 47 menu

React Router да ичкизи йўлланар

Бу дарсда биз ичкизи йўлланар билан танишамиз. Утган дарсда қилган иловамизни ишга туширинг. Ҳаволалар босганда, биз маҳсулот билан алоҳида саҳифага ўтамиз. Фарз қилайлик, бизга бундай бўлиши қулай эмас ва биз маҳсулотлар рўйхати ва маҳсулот саҳифаси бир экранда, яқин-яқиндан кўринишини истаймиз. Келинг буни қилайлик.

Бунинг учун main.jsx файлини очайлик ва маҳсулот саҳифаси учун йўлимизни илдизги йўлнинг фарзанд йўли қилайлик ёки бошқача айтилганда уни илдизги йўлга "киритамиз". Буни учун йўл объектининг яна бир хусусияти children дан фойдаланамиз:

const router = createBrowserRouter([ { path: '/', element: <Root />, errorElement: <ErrorPage404 />, children: [ { path: 'products/:productId', element: <Product />, }, ], }, ]);

Яна ҳаволалар босайлик, лекин маҳсулотлар рўйхати ўнг томонида биз ҳеч нарса кўрмаймиз. Бунинг сабаби, биз илдизги йўлга унинг фарзанд йўлларини қаерда кўрсатишни айтмаганмиз.

Фарзанд йўллари элементларини ота йўлда кўрсатиш учун бизга Outlet компоненти ёмардам беради. Келинг уни кутубхонадан илдизги йўл учун файлга импорт қилайлик:

import { Outlet } from 'react-router-dom';

Сўнгра уни #product див га ўраб ва илдизги йўл учун макетга nav йопилув тегидан кейин верстканинг охирига қўшайлик, ва бутун конструкцияни яна бир #main див га ўраб қўямиз:

return ( <div id="main"> <nav> <a href={`/products/1`}>Product1</a> <a href={`/products/2`}>Product2</a> </nav> <div id="product"> <Outlet /> </div> </div> );

Ҳаволалар босганда, энди биз маҳсулотлар рўйхати ва маҳсулот саҳифасини кўрамиз.

index.css га озгина стил қўшайлик:

h1, h2 { margin: 0; } div#main { display: flex; margin: 20px; } div#product { margin-left: 40px; }

Утган дарснинг вазифасида яратган иловангизни олинг. Дарс материалларидан фойдаланиб, талаба саҳифаси учун йўлни илдизгига киритиб қуйинг.

Энди эса, талабалар рўйхати ва талаба саҳифаси ҳаволалар босилганда экранда кўриниши учун қилинг.

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