목표
- 게시판 목록 페이지 만들기
- 게시판 상세 페이지 만들기
- 게시판 작성 페이지 만들기
- 게시판 수정 및 삭제 페이지 만들기
Typescript로 React를 설치하고, 게시판에 필요한 페이지들을 만든다.
결과 화면
1. 타입스크립트로 리액트 프로젝트 설치하기
https://jae-study.tistory.com/70
리액트 설치에 대한 자세한 설명은 위의 링크를 참고한다.
터미널에서 아래 명령어를 실행해 타입스크립트로 리액트 프로젝트를 설치한다.
yarn create react-app 폴더명 --template typescript
또는
npx create-react-app 폴더명 --template typescript
2. 게시판 폴더 구조
- 목록 : src/pages/board/list/index.tsx
- 상세 : src/pages/board/detail/index.tsx
- 생성 : src/pages/board/create/index.tsx
- 수정 : src/pages/board/modify/index.tsx
게시판 목록, 상세, 생성, 수정, 총 4가지 페이지를 만든다.
3. 마크업, css/scss 적용하기
https://jae-study.tistory.com/72
리액트에 scss를 적용하고 싶으면 위의 링크를 참고한다.
페이지 별로 마크업을 하고,
css 또는 scss 파일을 작성한 뒤, 각 index.tsx 파일에 import 해준다.
- src/pages/board/list/index.tsx
해당 마크업은 예시일 뿐, 원하는 디자인으로 목록, 상세, 생성, 수정 페이지를 만든다.
import { Link } from 'react-router-dom'
import Button from '../../../components/form/Button'
import Title from '../../../components/text/Title'
import './index.scss'
const BoardList = () => {
return (
<div className="board-list">
<Title children="Board list"/>
<h4>Total post : 10개</h4>
<table>
<colgroup>
<col width="15%"/>
<col width="65%"/>
<col width="20%"/>
</colgroup>
<thead>
<tr>
<th>No</th>
<th>Title</th>
<th>Date</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>
<Link to={`/board/1`}>공지사항 입니다.</Link>
</td>
<td>2023.06.30</td>
</tr>
</tbody>
</table>
<Link to="/board/create">
<Button children="Write" variant="primary"/>
</Link>
</div>
)
}
export default BoardList
- src/pages/board/list/index.scss
@import '../../../assets/scss/base/variable';
.board-list {
h4 {
margin-bottom: 20px;
font-weight: 700;
}
table {
background-color: $bg-light;
border-radius: 5px;
thead {
th {
padding: 20px 0;
font-size: 20px;
font-weight: 700;
}
}
tbody {
border-top: 1px solid $bg-point;
td {
padding: 25px 0;
text-align: center;
vertical-align: middle;
&.title {
text-align: left;
a {
padding-bottom: 2px;
&:hover {
border-bottom: 1px solid $bg-point;
}
}
}
}
}
}
}
4. 라우터 연결하기
https://jae-study.tistory.com/73
react-router-dom에 대한 자세한 설명은 위의 링크를 참고한다.
react-router-dom 패키지를 설치한다.
yarn add react-router-dom
또는
npm install react-router-dom
- src/index.tsx
import React from 'react'
import ReactDOM from 'react-dom/client'
import App from './App'
const root = ReactDOM.createRoot (
document.getElementById('root') as HTMLElement
)
root.render(
<React.StrictMode>
<App/>
</React.StrictMode>
)
- src/App.tsx
BrowserRouter, Routes, Route 패키지를 import 하고,
<Route> 컴포넌트의 path를 설정한다.
게시판 상세와 수정 페이지는 게시글 별로 페이지가 있기 때문에 :id 값을 받아야 한다.
import React from 'react'
import { BrowserRouter, Routes, Route } from 'react-router-dom'
import './assets/scss/common.scss'
import BoardList from './pages/board/list'
import BoardDetail from './pages/board/detail'
import BoardCreate from './pages/board/create'
import BoardModify from './pages/board/modify'
const App = () => {
return (
<>
{
<BrowserRouter>
<Routes>
<Route path="/board" element={<BoardList/>}/>
<Route path="/board/:id" element={<BoardDetail/>}/>
<Route path="/board/create" element={<BoardCreate/>}/>
<Route path="/board/modify/:id" element={<BoardModify/>}/>
</Routes>
</BrowserRouter>
}
</>
)
}
export default App
#1
타입스크립트로 리액트를 설치하고,
게시판 목록, 상세, 생성, 수정 페이지를 만들고,
라우터 연결까지 완료했다.
'React > 게시판 만들기(TS)' 카테고리의 다른 글
[리액트][타입스크립트] #5 게시판 만들기 - 수정, 삭제 페이지 (axios.patch, axios.delete) (0) | 2023.07.05 |
---|---|
[리액트][타입스크립트] #4 게시판 만들기 - 생성 페이지 (axios.post) (0) | 2023.07.05 |
[리액트][타입스크립트] #3 게시판 만들기 - 상세 페이지 (axios.get) (0) | 2023.07.05 |
[리액트][타입스크립트] #2.2 게시판 만들기 - 목록 페이지네이션 (react-js-pagination) (0) | 2023.06.30 |
[리액트][타입스크립트] #2.1 게시판 만들기 - 목록 페이지 (axios.get, dayjs) (0) | 2023.06.30 |