티스토리 뷰
라우트 작성(페이지, 링크를 타고 이동하는 경로)
https://www.npmjs.com/package/react-router-dom
react-router-dom
Declarative routing for React web applications. Latest version: 7.5.2, last published: 3 days ago. Start using react-router-dom in your project by running `npm i react-router-dom`. There are 23706 other projects in the npm registry using react-router-dom.
www.npmjs.com
https://www.npmjs.com/package/@types/react-router-dom
@types/react-router-dom
TypeScript definitions for react-router-dom. Latest version: 5.3.3, last published: 3 years ago. Start using @types/react-router-dom in your project by running `npm i @types/react-router-dom`. There are 1779 other projects in the npm registry using @types/
www.npmjs.com
설치
npm install react-router-dom @types/react-router-dom --save
App.tsx에서 작성



//App.tsx
import Layout from "./components/layout/Layout";
import Home from "./pages/Home";
import { ThemeProvider } from "styled-components";
import { GlobalStyle } from "./style/global";
import { ThemeName, getTheme } from "./style/theme";
import ThemeSwitcher from "./components/header/ThemeSwicher";
import { useContext, useState } from "react";
import { BookStoreThemeProvider, ThemeContext } from "./context/themeContext";
import { createBrowserRouter, RouterProvider } from "react-router-dom";
import Error from "./components/common/Error";
const router = createBrowserRouter([
{
path:"/",
element:<Layout><Home /></Layout>,
errorElement: <Error />,
},
{
path: "/books",
element:<Layout><div>도서 목록</div></Layout>,
}
]);
function App() {
return (
<>
<BookStoreThemeProvider>
{/* ThemeSwitcher에 themeName과 setThemeName을 전달*/}
<ThemeSwitcher />
<RouterProvider router = {router} />
</BookStoreThemeProvider>
</>
);
}
export default App;
// Error.tsx
import { useRouteError } from "react-router-dom";
interface RouterError{
stateText?: string;
message?: string;
}
function Error(){
const error = useRouteError() as RouterError;
return(
<div>
<h1>오류가 발생했습니다.</h1>
<p>다음과 같은 오류가 발생했습니다.</p>
<p>{error.stateText || error.message}</p>
</div>
);
}
export default Error;
프로젝트 모델 정의
예전에 만들었던 모델을 주요 모델로 나눠서 작성


