⊗jsrtPmRtPR 47 of 47 menu

Маршрут без шляху ў React Router

На гэтым уроку мы разгледзім яшчэ адно карыснае ўласцівасць маршруту без шляху.

Вы ведаеце, што для кожнага аб'екта маршруту вы можаце дадаць уласцівасць errorElement і ў якасці значэння ўсталяваць той элемент, які хочаце адлюстроўваць пры ўзнікненні памылкі.

Але што калі ў нас errorElement будзе аднолькавым для ўсіх маршрутаў? Можна, вядома наляпаць адно і тое ж для кожнага, а можна скарыстацца маршрутам без шляху, абысці ім цікаўныя для нас даччыныя маршруты. Тады ў выпадку ўзнікнення памылкі на адным з іх, наш маршрут без шляху будзе іх лавіць і адлюстроўваць свой errorElement.

Зайдзем у main.jsx файл і абярэм у маршрут без шляху ўсе нашы даччыныя маршруты, зрабіўшы іх даччынымі для яго (у сваю чаргу гэты маршрут стане даччыным для каранёвага), не забудзем дадаць яму таксама ўласцівасць 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, }, ], }, ], }, ]);

Як праверыць цяпер працу гэтага кода? Можна дадаць радок з выкіданнем памылкі (не забудзьце потым яе ўбраць, калі праверыце). Давайце, напрыклад, дадамо яе першай радком у функцыю action для маршруту выдалення прадукту, тады пры спробе выдаліць прадукт мы ўбачым памылку:

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

Цяпер паспрабуйце выдаліць які-небудзь прадукт.

Вазьміце дадатак, створанае вамі ў заданнях да мінулых урокаў. Карыстаючыся матэрыяламі ўрока, абярыце вашы даччыныя маршруты ў маршрут без шляху з уласцівасцю errorElement і праверце, што гэта працуе.

Беларуская
AfrikaansAzərbaycanБългарскиবাংলাČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Мы выкарыстоўваем cookie для працы сайта, аналітыкі і персаналізацыі. Апрацоўка дадзеных адбываецца згодна Палітыкай канфідэнцыяльнасці.
прыняць усе наладзіць адхіліць