⊗jsrtPmRtNR 27 of 47 menu

Vnořené trasy v React Router

V této lekci se seznámíme s vnořenými trasami. Spusťte aplikaci, kterou jsme dělali v minulé lekci. Klikáním na odkazy se dostaneme na samostatnou stránku s produktem. Předpokládejme, že nám to není pohodlné a chtěli bychom, aby se seznam produktů a stránka produktu zobrazovaly vedle sebe, na jedné obrazovce pro větší názornost. Pojďme to udělat.

K tomu otevřeme soubor main.jsx a jednoduše uděláme naši trasu pro stránku s produktem podřízenou trasou kořenové trasy nebo, jinými slovy, "vnoříme" ji do kořenové trasy. K tomu použijeme ještě jednu vlastnost objektu trasy children:

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

Znovu klikáme na odkazy, ale napravo od seznamu produktů nic nevidíme. To proto, že jsme neřekli kořenové trase, kde chceme zobrazit její podřízené trasy.

Právě pro vykreslení elementů podřízených tras v rodičovském nám pomůže komponenta Outlet. Pojďme ji importovat z knihovny do souboru pro kořenovou trasu:

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

Poté jej obalme do divu #product a přidejme do rozvržení pro kořenovou trasu na konec verštace po uzavíracím tagu nav a celou konstrukci obalme ještě do jednoho divu #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> );

Klikáním na odkazy nyní vidíme jak seznam produktů, tak stránku produktu.

Přidejme trochu stylů do našeho index.css:

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

Vezměte aplikaci, kterou jste vytvořili v úkolu k minulé lekci. Používejte materiály lekce a udělejte trasu pro stránku studenta vnořenou do kořenové.

A nyní udělejte to, aby při kliku na odkazy se na obrazovce zobrazoval jak seznam studentů, tak stránka studenta.

Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικά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
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout