항해99 개발일지
02 - 15 일지
카로루딘
2023. 2. 16. 09:27
오전, 오후 - 과제 기능 마무리
특이사항
페이지 구분하는 부분이 꽤나 어려웠다. router를 사용하는 것인데, app.js에 있는 내용은 무조건 출력되는 것을 몰라 꽤나 고생한 것이다.
리액트 router DOM
페이지를 구성할 수 있게 해주는 패키지이다. 설치법은 yarn add react-router-dom으로 설치한다. 그 다음 src 폴더에 page폴더를 만들고 그 안에 page.js 파일들을 생성한다. 이것들은 컴포넌트와 비슷한데, 현재 라우터에 맞는 페이지를 출력하기 위한 구성품들이다.
다음에는 shared 폴더를 만들고 그 안에 router.js 파일을 생성한다. 이 안에 page 폴더에 있는 page.js 파일들을 임포트한다.
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
|
import React from "react";
// 1. react-router-dom을 사용하기 위해서 아래 API들을 import 합니다.
import { BrowserRouter, Route, Routes } from "react-router-dom";
import Test from "../pages/Test";
import Work from "../pages/Work";
import Main from "../pages/Main";
import Sangsae from "../pages/Sangsae";
// 2. Router 라는 함수를 만들고 아래와 같이 작성합니다.
//BrowserRouter를 Router로 감싸는 이유는,
//SPA의 장점인 브라우저가 깜빡이지 않고 다른 페이지로 이동할 수 있게 만들어줍니다!
const Router = () => {
return (
<BrowserRouter>
<Routes>
<Route path="/" element={<Main />} />
<Route path="test" element={<Test />} />
<Route path="work" element={<Work />} />
<Route path="sangsae/:id" element={<Sangsae />} />
</Routes>
</BrowserRouter>
);
};
export default Router;
|
cs |
위 구조로 만들어진다. 여기에선 연습용ㅇ로 만들었던 test와 work 페이지가 있으며 main 페이지에는 기존 app.js에 들어가있던 구성을 옮겨 담았다. sangsae:id는 동적 라우팅으로, sangsae1, sangsae2, sangsae3 페이지같은 동적으로 추가된 페이지로 넘겨준다. 과제에서는 각 todo항목의 상세페이지로 넘어가는 역할을 해주었다.
버튼을 눌러 넘어가는 방식이라면 navigation을 쓰고 텍스트 클릭으로 넘어갈거면 link를 쓰면 된다.