티스토리 뷰

라우트 작성(페이지, 링크를 타고 이동하는 경로)

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에서 작성

Home화면과 books페이지로 이동했을때

 

아직 만들지 않은 페이지로 이동했을때

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

 

프로젝트 모델 정의

예전에 만들었던 모델을 주요 모델로 나눠서 작성

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/12   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함