Ruter i React Router

Ruter (Routes) er den viktigste delen av et applikasjon i React Router. La oss se på et kodesnippet fra forrige leksjon:

main.jsxconst router = createBrowserRouter([
  {
    path: '/',
    element: <div>Hello Router!</div>,
  },
]);

Så, egenskapene path og element som vi sendte til funksjonen når vi opprettet ruteren, er egenskapene til Route-objektet. Faktisk, har dette objektet mange egenskaper, de kan finnes i den offisielle dokumentasjonen. Fremover vil noen av dem være nyttige for oss:

jsxinterface RouteObject {
  path?: string;
  index?: boolean;
  children?: React.ReactNode;
  caseSensitive?: boolean;
  id?: string;
  loader?: LoaderFunction;
  action?: ActionFunction;
  element?: React.ReactNode | null;
  Component?: React.ComponentType | null;
  errorElement?: React.ReactNode | null;
  ErrorBoundary?: React.ComponentType | null;
  handle?: RouteObject["handle"];
  shouldRevalidate?: ShouldRevalidateFunction;
  lazy?: LazyRouteFunction<RouteObject>;
}

Man kunne ha brukt en alternativ JSX-stil og skrevet egenskapene som props for Route-komponenten, da ville kodesnutten vår sett slik ut:

main.jsxconst router = createBrowserRouter(
  createRoutesFromElements(
    <Route
      path = '/'
      element = {<div>Hello Router!</div>}
    />
  )
);

Og, selvfølgelig, måtte man ha lagt til et par linjer til i importen:

main.jsximport {
  createRoutesFromElements,
  createBrowserRouter,
  RouterProvider,
  Route,
} from 'react-router-dom';

Begge stilartene presentert i leksjonen er likeverdige. Vi vil i det videre holde oss til den første varianten.

Задание 1

Ta applikasjonen du opprettet i oppgavene til de foregående leksjonene. Prøv å omskrive kodesnutten for opprettelse av routeren (den gamle kan du kommentere ut foreløpig), ved å bruke den alternative JSX-syntaksen presentert i leksjonen. Forsikre deg om at applikasjonen fungerer.

Задание 2

Sett tilbake all den gamle koden, og fjern den nye. Forsikre deg om at applikasjonen fungerer.