⊗jsrtPmRtPR 47 of 47 menu

Maršrutas be kelio React Router

Šioje pamokoje nagrinėsime dar vieną naudingą maršruto be kelio savybę.

Jūs žinote, kad kiekvienam maršruto objektui galite pridėti savybę errorElement ir kaip reikšmę nustatyti tą elementą, kurį norite rodyti kai įvyksta klaida.

Bet kas jei mums errorElement bus vienodas visiems maršrutams? Galima, žinoma, priskirti tą patį kiekvienam, arba galima pasinaudoti maršrutu be kelio, apvynioti juo mus dominančius antrinius maršrutus. Tada kai įvyksta klaida viename iš jų, mūsų maršrutas be kelio juos pagaus ir parodys savo errorElement.

Eikime į main.jsx failą ir apvyniokime maršrutu be kelio visus mūsų antrinius maršrutus, padarydami juos jo antriniais (savo ruožtu šis maršrutas taps pagrindinio antriniu), nepamirškime jam taip pat pridėti savybę 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, }, ], }, ], }, ]);

Kaip dabar patikrinti šio kodo veikimą? Galima pridėti eilutę su klaidos metimu (nepamirškite jos pašalinti, kai patikrinsite). Pavyzdžiui, pridėkime ją pirmąja eilute į funkciją action produkto ištrynimo maršrutui, tada bandant ištrinti produktą pamatysime klaidą:

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

Dabar pabandykite ištrinti kokį nors produktą.

Paimkite programėlę, kurią sukūrėte užduotyse ankstesnėse pamokose. Naudodamiesi pamokos medžiaga, apvyniokite savo antrinius maršrutus maršrutu be kelio su savybe errorElement ir patikrinkite, kad tai veikia.

Lietuvių
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mes naudojame slapukus svetainės veikimui, analizei ir personalizavimui. Duomenų apdorojimas vyksta pagal Privatumo politiką.
priimti visus nustatyti atšaukti