⊗jsrtPmRtPR 47 of 47 menu

Rute uten sti i React Router

I denne leksjonen skal vi se på enda en nyttig egenskap ved ruter uten sti.

Du vet at for hvert ruteobjekt kan du legge til en egenskap errorElement og som verdi sette det elementet du ønsker å vise ved oppstått feil.

Men hva om vår errorElement er den samme for alle rutene? Man kan selvfølgelig sette den samme for hver, eller man kan bruke en rute uten sti, og pakke inn de barerutene vi er interessert i. Da, hvis en feil oppstår i en av dem, vil vår rute uten sti fange dem opp og vise sin errorElement.

La oss gå inn i main.jsx filen og pakke inn alle våre bareruter i en rute uten sti, og gjøre dem til barn av den (denne ruten vil i sin tur bli et barn av rotruten), ikke glem å også legge til egenskapen 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, }, ], }, ], }, ]);

Hvordan sjekker vi nå at denne koden fungerer? Man kan legge til en linje som kaster en feil (ikke glem å fjerne den etterpå, når du har sjekket). La oss for eksempel legge den til som første linje i funksjonen action for ruten som sletter produktet, da vil vi ved forsøk på å slette et produkt se feilen:

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

Prøv nå å slette et produkt.

Ta applikasjonen du opprettet i oppgavene til tidligere leksjoner. Bruk materialet fra leksjonen, pakk inn dine bareruter i en rute uten sti med egenskapen errorElement og sjekk at dette fungerer.

Norsk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi bruker informasjonskapsler for nettstedets funksjonalitet, analyse og personalisering. Behandling av data foregår i henhold til Personvernerklæringen.
godta alle tilpass avvis