React Router의 라우트

라우트(Routes)는 React Router 애플리케이션의 가장 중요한 부분입니다. 지난 강의의 코드 일부를 살펴보겠습니다:

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

그렇다면, 라우터를 생성할 때 함수에 전달한 객체의 속성인 path와 element는 바로 Route 객체의 속성입니다. 사실, 이 객체는 많은 속성을 가지고 있으며, 공식 문서에서 확인할 수 있습니다. 앞으로, 그중 일부가 필요할 것입니다:

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

대안적인 JSX 스타일을 사용하고 Route 컴포넌트의 props로 속성을 작성할 수도 있으며, 그러면 우리의 코드 조각은 이렇게 보일 것입니다:

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

그리고 물론, 임포트에 몇 줄을 더 추가해야 했을 것입니다:

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

이 강의에 제시된 두 스타일 모두 동등합니다. 우리는 앞으로 첫 번째 방식을 고수할 것입니다.

Задание 1

이전 강의의 과제에서 생성한 애플리케이션을 가져오세요. 라우터 생성을 위한 코드 조각을(이전 코드는 일단 주석 처리하고) 이 강의에 제시된 대안적인 JSX 구문을 사용하여 다시 작성해 보세요. 애플리케이션이 작동하는지 확인하세요.

Задание 2

모든 이전 코드를 원래 자리로 되돌리고, 새 코드는 제거하세요. 애플리케이션이 작동하는지 확인하세요.