Útvonal útvonal nélkül a React Routerben

Ezen a leckén megvizsgáljuk az útvonal útvonal nélkül még egy hasznos tulajdonságát.

Tudja, hogy minden útvonalobjektumhoz hozzáadhatja a errorElement tulajdonságot és értéknek beállíthatja azt az elemet, amit meg szeretne jeleníteni hiba esetén.

De mi van, ha a errorElement ugyanaz lesz minden útvonalhoz? Lehetne természetesen mindegyikhez ugyanazt beilleszteni, de használhatjuk az útvonal útvonal nélkül is, becsomagolva abba a minket érdeklő gyermek útvonalakat. Akkor hiba esetén bármelyikükön, az útvonalunk útvonal nélkül elkapja azokat és megjeleníti a saját errorElement-jét.

Menjünk a main.jsx fájlba és csomagoljuk be az útvonal útvonal nélkül minden gyermek útvonalunkat, ezeket gyermekévé téve (viszont ez az útvonal lesz a gyermeke a gyökérelemnek), ne felejtsük el hozzáadni neki a errorElement tulajdonságot is:

main.jsxconst 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,
          },
        ],
      },
    ],
  },
]);

Hogyan ellenőrizhetjük most ennek a kódnak a működését? Hozzáadhatunk egy sort egy hiba dobásával (ne felejtsd el később eltávolítani, ha ellenőrizted). Tegyük fel például, hozzáadjuk első sorként a függvényben a action-hez a termék törlésének útvonalához, akkor amikor megpróbáljuk törölni a terméket, megjelenik a hiba:

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

Most próbálj meg törölni egy terméket.

Задание 1

Vegye azt az alkalmazást, amit az előző leckékhez szóló feladatokban készített. A lecke anyagait használva, csomagolja be a gyermek útvonalait egy útvonal útvonal nélkül-be a errorElement tulajdonsággal és ellenőrizze, hogy ez működik.