⊗jsrtPmRtNR 27 of 47 menu

Vnorené trasy v React Router

V tejto lekcii sa zoznámime s vnorenými trasami. Spustite aplikáciu, ktorú sme robili na predchádzajúcej lekcii. Kliknutím na odkazy sa dostaneme na samostatnú stránku s produktom. Predpokladajme, že je to pre nás nepohodlné a chceli by sme, aby zoznam produktov a stránka produktu boli zobrazené vedľa seba, na jednej obrazovke pre väčšiu názornosť. Poďme to urobiť.

Preto otvorme súbor main.jsx a jednoducho urobme našu trasu pre stránku s produktom podriadenou trasou koreňovej trasy alebo, inými slovami, "vnorte" ju do koreňovej trasy. Na to použijeme ďalšiu vlastnosť objektu trasy children:

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

Klikáme na odkazy znova, ale napravo od zoznamu produktov nič nevidíme. Je to preto, že sme nepovedali koreňovej trase, kde chceme zobraziť jej podriadené trasy.

Práve na vykreslenie elementov podriadených trás v nadradenom nám pomôže komponent Outlet. Importujme ho z knižnice do súboru pre koreňovú trasu:

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

Potom ho obalme do div #product a pridajme do rozloženia pre koreňovú trasu na konci verštingu po zatváracom tagu nav, a celú konštrukciu obalme ešte do jedného div #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> );

Kliknutím na odkazy teraz vidíme aj zoznam produktov aj stránku produktu.

Pridajme trochu štýlov do nášho index.css:

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

Vezmite aplikáciu, ktorú ste vytvorili v úlohe k predchádzajúcej lekcii. Použitím materiálov z lekcie urobte trasu pre stránku študenta vnorenou do koreňovej.

A teraz urobte to, aby pri kliknutí na odkazy sa na obrazovke zobrazil aj zoznam študentov aj stránka študenta.

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ť