Trasy w React Router

Trasy (Routes) są najważniejszą częścią aplikacji React Router. Rozważmy kawałek kodu z poprzedniej lekcji:

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

A więc, właściwości obiektu path i element, które przekazywaliśmy do funkcji przy tworzeniu routera, są właściwościami obiektu Route. W rzeczywistości, ten obiekt ma wiele właściwości, ich listę można znaleźć w oficjalnej dokumentacji. W przyszłości, przydadzą się niektóre z nich:

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>;
}

Można było skorzystać z alternatywnego stylu JSX i zapisać właściwości jako propsy dla komponentu Route, wtedy nasz kawałek kodu wyglądałby tak:

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

I, oczywiście, trzeba by było dodać jeszcze kilka linijek do importu:

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

Oba przedstawione w lekcji style są równorzędne. My w dalszej części będziemy trzymać się pierwszego wariantu.

Задание 1

Weź aplikację stworzoną przez Ciebie w zadaniach do poprzednich lekcji. Spróbuj przepisać kawałek kodu do tworzenia routera (stary na razie zakomentuj), używając alternatywnej składni JSX, przedstawionej w lekcji. Upewnij się, że aplikacja działa.

Задание 2

Przywróć na miejsce cały stary kod, a nowy usuń. Upewnij się, że aplikacja działa.