⊗jsrtPmRtPR 47 of 47 menu

Reitittömän reitin käyttö React Routerissa

Tällä oppitunnilla tarkastelemme vielä yhtä reitittömän reitin hyödyllistä ominaisuutta.

Tiedät, että jokaiselle reittiobjektille voit lisätä ominaisuuden errorElement ja asettaa arvoksi sen elementin, jonka haluat näkyvän virheen ilmaantuessa.

Mutta mitä jos errorElement on sama kaikille reiteille? Voisimme tietenkin lisätä saman jokaiselle, tai voimme hyödyntää reititöntä reittiä, kääriä sen sisälle meitä kiinnostavat lapsireitit. Silloin virheen ilmaantuessa yhdellä niistä, reititon reittimme näkee sen ja näyttää oman errorElementnsä.

Menkäämme tiedostoon main.jsx ja käärimme reitittömän reitin sisälle kaikki lapsireittimme, tekemme niistä sen lapsia (vuorostaan tästä reitistä tulee pääreitin lapsi), älkäämme unohtako lisätä sille myös ominaisuuden errorElement:

const router = createBrowserRouter([ { path: '/', element: <Root />, errorElement: <ErrorPage404 />, loader: rootLoader, action: rootAction, children: [ { errorElement: <ErrorPage404 />, children: [ { index: true, element: <Index /> }, { path: 'products/:productId', element: <Product />, loader: productLoader, }, { path: 'products/:productId/edit', element: <EditProduct />, loader: editProductLoader, action: editAction, }, { path: 'products/:productId/delete', action: deleteAction, }, ], }, ], }, ]);

Miten tarkistamme nyt tämän koodin toiminnan? Voimme lisätä rivin, joka heittää virheen (älkää unohtako poistaa sitä myöhemmin, kun olette tarkistaneet). Lisätäänpä esimerkiksi se ensimmäiseksi riviksi funktioon action tuotteen poistoreitille, silloin yrityksessä poistaa tuote näemme virheen:

export async function action({ params }) { throw new Error('error'); await deleteProduct(params.productId); return redirect('/'); }

Yrittäkää nyt poistaa jokin tuote.

Ota sovellus, jonka loit aiempien oppituntien tehtäviin. Hyödyntäen oppitunnin materiaaleja, kierrä lapsireittisi reitittömän reitin sisälle ominaisuudella errorElement ja varmista, että se toimii.

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ää