쓰는 이유?

1. 페이지 전환을 쉽게 만들 수 있게 도와줌

2. 페이지 새로고침 않고도 화면 이동

 

BrowserRouter

 - 애플리케이션 감싸는 최상위 컴포넌트

 - html 히스토리 사용해서 URL 관리함

 

설치방법

npm install react-router-dom

 

import React from 'react'
import ReactDOM from 'react-dom/client'
import App from './App.jsx'
import './index.css'
import { BrwoserRouter } from "react-router-dom"; // react-router-dom 적용 시 추가

ReactDOM.createRoot(document.getElementById('root')).render(
    <BrwoserRouter> // 추가
        <App />
    </BrwoserRouter> // 추가
);

 

리액트앱에 모든 앱들이 BrowserRouter안에 있

게 된다.

 

import { Routes , Route } from "react-router-dom";

function App() {
  return <Routes />;
}

 

Routers 안에 여러 Router를 정의하여 URL 경로별로 렌더링할 컴포넌트 지정 가능

 

import NotFound from "./pages/NotFound";

function App() {
  return <Routes>
    <Route path="/" element={<1 />} />
    <Route path="/2" element={<2 />} />
    <Route path="/3" element={<3 />} />
    <Route path="*" element={<NotFound />}/>
  </Routes>;
}

 

Route path에 "*"를 설정하면 3개 안탈경우 해당 페이지 타게 설정된 것

 

Link컴포넌트 이용해서 다른 방법으로도 표현할 수 있음

import { Routes , Route , Link } from "react-router-dom";

<Link to={"/"}>Home</Link>
<Link to={"/1"}>1</Link>
<Link to={"/2"}>2</Link>
<Link to={"/*"}>NotFound</Link>

마찬가지로 링크 컴포넌트 이용해서 이동할 수 있다.

a태그를 이용하면 번들패키지로 전부 렌더링 되어 있는 MPA 방식으로 동작할 수 있음 SPA 원칙이 깨질 수 있다.


SPA vs MPA

 - SPA 단일 페이지 동작 , 클라이언트 측에서 페이지 전환함 (전부 가져오고 그 다음 누르면 그 부분만 보여주는 것)

 - MPA는 페이지가 독립적이여서 깜빡깜빡거림 자연스럽지가 않고 원할때 그 부분만 새로 로드하는 방식

 

 

+ Recent posts