FrontEnd/React

[React] 리액트 : 페이지 라우팅(라우트)에 대한 정리 및 라우팅 설정 방법

모찌바라기 2024. 4. 22. 12:06
728x90
반응형

 

 

 

 

Vue프로젝트 할 때, 쓰기만 했지 정리를 안해서.. 이번에 리액트 공부하는김에 라우트 정리를 좀 하려고 한다..

 

 

페이지 라우팅이란?

 

 

 

리액트 라우터 설치

 

1. 리액트 라우터 설치

 

 

react-router-dom 설치 명령어

npm i react-router-dom

 

 

그냥 npm으로 설치하면 되니 어렵게 생각안해도 된다.. 위와 같이 package.json의

dependencies객체에 react-router-dom이 추가 되었다면 됬다..

 

 

리액트 라우터 설정 방법

 

라우터를 사용할 때, 작성은 크게 다음과 같은 순서로 작성하면 된다.

 

1. <BrowserRouter>로 라우터를 적용할 상위컴포넌트를 감싼다.

2. <Routes>로 <Route>들을 감싼다.

3. <Route>에 URL경로와 해당 URL경로로 접근시 변경 해줄 컴포넌트를 path와 element 속성에 담아준다.

4. <Link>에 to 속성에 원하는 경로를 작성해준다.

 

와 같이 진행된다. 위에서 이야기한 BrowserRouter, Routes, Route, Link는 react-router-dom 라이브러리에서

제공하므로, 사용하려면 import 해야한다.

 

 

import

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

 

 

기본문법

//BrowserRouter import
import { BrowserRouter } from "react-router-dom";

//<BrowserRouter>로 라우터를 설정 할 컴포넌트를 감싼다.
<BrowserRouter>
	<라우터를 설정 할 컴포넌트 />
</BrowserRouter>

<Link to="이동하고 싶은 URL경로"></Link>

<Routes>
	<Route path="변경 할 컴포넌트의 URL경로" element={변경 할 컴포넌트} />
</Routes>

 

 

 

 

라우터 샘플코드

 

main.jsx

import React from "react";
import ReactDOM from "react-dom/client";
import App from "./App.jsx";
import "./index.css";
import { BrowserRouter } from "react-router-dom"; <!-- BrowserRouter import -->

ReactDOM.createRoot(document.getElementById("root")).render(
  <React.StrictMode>
    <BrowserRouter> <!-- App컴포넌트를 <BrowserRouter>로 감쌈 -->
      <App />
    </BrowserRouter>
  </React.StrictMode>
);

 

 

App.jsx

import "./App.css";
import { Home } from "./pages/Home";
import { Map } from "./pages/Map";
import { Shop } from "./pages/Shop";
import { Route, Routes, Link } from "react-router-dom";

function App() {
  return (
    <>
      <div>
        <Link to="/Home" style={{ border: "solid", marginLeft: "5px" }}>
          HOME 이동
        </Link>
        <Link to="/Map" style={{ border: "solid", marginLeft: "5px" }}>
          MAP 이동
        </Link>
        <Link to="/Shop" style={{ border: "solid", marginLeft: "5px" }}>
          SHOP 이동
        </Link>
      </div>
      <Routes>
        <Route path="/Home" element={<Home />} />
        <Route path="/Map" element={<Map />} />
        <Route path="/Shop" element={<Shop />} />
      </Routes>
    </>
  );
}

export default App;

 

 

각 컴포넌트

#Home 컴포넌트
export const Home = () => {
  return (
    <>
      <div>Home입니다</div>
    </>
  );
};

#Map 컴포넌트
export const Map = () => {
  return (
    <>
      <div>Map입니다</div>
    </>
  );
};

#Shop 컴포넌트
export const Shop = () => {
  return (
    <>
      <div>Shop입니다</div>
    </>
  );
};

 

 

결과

0

 

 

 

결과를 보면 버튼을 누를때 마다, URL이 변경되고 컴포넌트가 변경되는 것을 확인 할 수 있다.

위의 샘플코드는 진짜 그냥 어떻게 쓰는지만 적어놓은거고, 보통 개발에 적용할 때는

리액트에서 제공하는 useNavigate를 사용하여 모듈로 따로 빼서 작성을 한다.

 

 

useNavigate 샘플코드

import "./App.css";
import { Home } from "./pages/Home";
import { Map } from "./pages/Map";
import { Shop } from "./pages/Shop";
import { Route, Routes, useNavigate } from "react-router-dom";

function App() {
  const nav = useNavigate();

  const onClickButton = (link) => {
    nav(link);
  };

  return (
    <>
      <div>
        <button onClick={() => onClickButton("/")}>Home 페이지로 이동</button>
        <button onClick={() => onClickButton("/Map")}>Map 페이지로 이동</button>
        <button onClick={() => onClickButton("/Shop")}>
          Shop 페이지로 이동
        </button>
      </div>
      <Routes>
        <Route path="/" element={<Home />} />
        <Route path="/Map" element={<Map />} />
        <Route path="/Shop" element={<Shop />} />
      </Routes>
    </>
  );
}

export default App;

 

 

 

 

728x90
반응형