React 게시판 예제 4단계 Router 설치 및 구성

페이지를 이리저리 이동하는 것이 아니라 현재 페이지에서 컴포넌트만 바뀌도록 하는 방식을 사용하기 위해 Router 설치와 구성을 해줍니다.


react-router-dom 설치

해당 프로젝트에서 cmd창을 열어서 아래의 명령어를 입력하여 설치합니다.
npm install react-router-dom

Router 설치

설치가 완료되면 vss에서 확인할 수 있는데 6.xx 버전으로 설치된 것을 볼 수 있습니다.

Router 설치확인


레이아웃 구성

index.js 에서 BrowserRouter를 구성해두고 내부에 Header, 본문, Footer 등의 layout을 구성해줍니다.
화면이 로드되면 젤 상단에 Header가 고정적으로 나오도록 하고 젤 하단에는 Footer가 고정적으로 나오도록 하기 위해 구성합니다.
src 하위에 layout 폴더를 생성하고 Header.js, Footer.js를 각각 추가해 줍니다.


Header.js에서는 header인 것을 표현해주고 간단히 홈과 메뉴를 이동할 수 있는 링크정도만 생성합니다.

import React from 'react';
import { Link } from 'react-router-dom';

const Header = () => {
  return (
    <header>
      header입니다.
      <Link to="/"></Link>
        |  
      <Link to="/UserList">사용자관리</Link>
      <hr/>
    </header>
  );
};

export default Header;

Footer.js에서는 footer인 것만 간단히 표현해줍니다.

import React from 'react';

const Footer = () => {
  return (
    <footer>
      <hr/>
      footer입니다.
    </footer>
  );
};

export default Footer;

이제 index.js에서 새로 만든 Header와 Footer를 배치해주고 중간에 App을 배치하여 중간본문 영역만 바뀌도록 해봅니다.

import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import App from './App';
import Header from './layout/Header';
import Footer from './layout/Footer';
import { BrowserRouter } from 'react-router-dom';

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  <BrowserRouter>
    <Header />
    <App />
    <Footer />
  </BrowserRouter>
);


Routes 구성

App.js에서 셋팅될 route 들을 따로 폴더를 만들어서 미리 생성해 줍니다.
src 하위에 routes 폴더를 생성하고 Home.js를 추가해 줍니다.
Home.js에서는 본문에 노출될 컨텐츠를 구성합니다.

const Home = () => {
    return (
      <div>
        <hr/>
        Home 입니다.
      </div>
    );
  };
  
  export default Home;

App.js에서 미리 생성한 Home을 연결합니다.

import { Route, Routes } from "react-router-dom";
import './App.css';

import Home from "./routes/Home";

function App() {
  return (
    <Routes>
      <Route path="/" element={<Home/>}/>
    </Routes>
  );
}

export default App;


기본 경로 설정

기본 경로를 설정해 두시면 import 시 사용되는 ./ 경로에 대해 생략할 수 있으니 해주는 것이 좋습니다.
루트 경로에 신규 설정 파일 jsconfig.json 을 추가하여 설정합니다.

jsconfig파일 추가
{
    "compilerOptions": {
        "baseUrl": "src"
    },
    "include": [
        "src"
    ]
}


마치며

여기까지가 프로젝트를 위한 기본적으로 구성이 끝났습니다.
앞선 포스팅에서 서버 연동을 이용하여 데이터를 가져오면 되고,
본문에 표현될 컨텐츠 영역인 등록화면, 목록화면, 상세화면 등을 routes 에 추가 해주고 App.js에 연결만 해주면 됩니다.


같이 보면 좋은 글