⊗jsrtPmRtPR 47 of 47 menu

Ruta bez putanje u React Router

U ovoj lekciji ćemo razmotriti još jedno korisno svojstvo rute bez putanje.

Znate da za svaki objekat rute možete dodati svojstvo errorElement i kao vrednost postaviti taj element koji želite da prikazujete u slučaju pojave greške.

Ali šta ako će nam errorElement biti isti za sve rute? Možemo, naravno, navući isto za svaku, a možemo iskoristiti rutu bez putanje, obmotati njom interesantne podređene rute. Tada u slučaju pojave greške na nekoj od njih, naša ruta bez putanje će ih uhvatiti i prikazati svoj errorElement.

Hajdemo u main.jsx fajl i obmotajmo rutom bez putanje sve naše podređene rute, čineći ih podređenim za nju (zauzvrat ova ruta će postati podređena za korensku), ne zaboravimo da joj takođe dodamo svojstvo 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, }, ], }, ], }, ]);

Kako sada proveriti rad ovog koda? Možete dodati liniju sa bacanjem greške (ne zaboravite je kasnije ukloniti, kada proverite). Hajde, na primer, dodajmo je kao prvu liniju u funkciju action za rutu brisanja proizvoda, tada ćemo pri pokušaju brisanja proizvoda videti grešku:

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

Sada pokušajte da obrišete neki proizvod.

Uzmite aplikaciju koju ste kreirali u zadacima za prethodne lekcije. Koristeći materijale lekcije, obmotajte vaše podređene rute u rutu bez putanje sa svojstvom errorElement i proverite da li to radi.

Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij