⊗jsrtPmRtNR 27 of 47 menu

Sisäkkäiset reitit React Routerissa

Tällä oppitunnilla tutustumme sisäkkäisiin reitteihin. Käynnistä sovellus, jota teimme edellisellä oppitunnilla. Napsauttamalla linkkejä, pääsemme erilliselle tuotesivulle. Oletetaan, että se on meille hankalaa, ja toivoisimme, että tuotelista ja tuotesivu näkyisivät vierekkäin, yhdellä näytöllä paremman selkeyden vuoksi. Tehdään se niin.

Tätä varten avaamme tiedoston main.jsx ja teemme tuotesivun reitista pääreitin alireitin tai toisin sanoen "sisällytämme" sen pääreittiin. Käytämme tähän toista reittiolion ominaisuutta children:

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

Napsautamme linkkejä uudelleen, mutta listan oikealla puolella tuotteista emme näe mitään. Syynä on, että emme kertoneet pääreitille, missä haluamme näyttää sen alireitit.

Tarkalleen alireittien elementtien renderöimiseksi vanhempaelementtiin auttaa meitä komponentti Outlet. Tuodaan se kirjastosta tiedostoon pääreittiä varten:

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

Sitten käärimme sen div-elementtiin #product ja lisäämme sen pääreitin layoutiin verstaan lopussa sulkevan tagin nav jälkeen, ja koko rakenteen käärimme vielä yhteen div-elementtiin #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> );

Napsauttamalla linkkejä näemme nyt sekä tuotelistan että tuotesivun.

Lisätään hieman tyylejä meidän index.css-tiedostoon:

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

Ota sovellus, jonka loit edellisen oppitunnin tehtävään. Hyödyntäen oppitunnin materiaaleja, tee reitti opiskelijasivusta sisäkkäinen pääreitin alle.

Ja nyt tee niin, että kun napsutat linkkejä, näytöllä näkyy sekä opiskelijalista että opiskelijasivu.

Suomi
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Käytämme evästeitä verkkosivuston toiminnalle, analytiikalle ja personoinnille. Tietojen käsittely tapahtuu Tietosuojakäytännön mukaisesti.
hyväksy kaikki mukauta hylkää