일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 27 | 28 | 29 | 30 | 31 |
Tags
- 리액트 훅
- useEffect
- React JS
- react firebase
- 코딩테스트 고득점 Kit
- NextJS
- Java
- 디자인 패턴
- 자바
- 코딩테스트 고득점 Kit 완전탐색
- react hook
- useState
- 장고
- 자바스크립트
- websocket
- 백준
- 데이터모델링과마이닝
- react
- 프로그래머스
- 코틀린
- 컴퓨터 네트워크
- 리액트
- codesandbox
- 프로그래밍 언어론
- design pattern
- vanillaJS
- 프로그래머스 완전탐색
- 프로그래머스 자바
- 자바 공부
- JavaScript
Archives
- Today
- Total
기록하는 개발자
[TypeScript] React+TypeScript+react-router-dom-v6로 개발 시작하기 본문
728x90
react+typescript 환경에서 최근 업데이트 된 react-router-dom의 v6를 이용하여
프로젝트의 생성, 페이지 라우팅 그리고 nav bar 구성까지의 과정이다.
React+TypeScript 로 개발 시작하기 https://mingmeng030.tistory.com/224
react-router-dom v6 변경사항 살펴보기 https://mingmeng030.tistory.com/225
1. 프로젝트 생성
- 아래 두 가지 중 하나를 선택한다.
[react project 생성]
→typescript없이 React+react-router-dom-v6 두 가지로 시작 할 경우
npx create-react-app [프로젝트명]
[react+typescript project 생성]
→ React+TypeScript+react-router-dom-v6 세 가지로 시작 할 경우
npx create-react-app [프로젝트명] --template typescript
// 높은 버젼이라 안된다고 에러가 떠서 아래 명령어를 실행하니 정상적으로 설치되었다.
npx create-react-app [프로젝트명] --template=typescript
2. react-router-dom 설치
npm install react-router-dom v6
npm install react-router-dom @types/react-router-dom
npm install --save @types/react @types/react-dom
3. 라우터 구성
AppRouter.tsx
import React, { useState, useEffect } from "react";
import { BrowserRouter, Route, Routes, Navigate } from "react-router-dom";
import Main from "./main/Main";
import Board from "./board/Board";
import Login from "./login/Login";
import Navigation from "./component/Navigation";
import MyPage from "./mypage/MyPage";
const AppRouter = () => {
return (
<>
<BrowserRouter>
<Navigation />
<Routes>
<Route path="/main/*" element={<Main />} />
<Route path="/board/*" element={<Board />} />
<Route path="/login/*" element={<Login />} />
<Route path="/mypage/*" element={<MyPage />} />
<Route path="/" element={<Navigate replace to="/main" />} />
</Routes>
</BrowserRouter>
</>
);
};
export default AppRouter;
- Switch와 useHistory 등이 다른 것으로 대체되었다. v6를 사용하려면 몇 가지 수정사항들을 익혀야겠다.
4. Navigation.tsx
import React, { useState } from "react";
import { Link } from "react-router-dom";
const Navigation = () => {
//image를 import하는 대신 require(path)를 통해 변수에 저장해준다.
const logo = require("../static/logo.png");
const [isLoggedIn, setIsLoggedIn] = useState<Boolean>(false);
return (
<nav className="nav">
<div className="nav-logo">
<Link to="/main">
<img src={logo} />
</Link>
</div>
<div className="nav-board">
<Link to="/board">게시판</Link>
</div>
{!isLoggedIn? (
<div className="nav-login">
<Link to="/login" className="logIn-button">
로그인
</Link>
</div>
) : (
<>
<div className="nav-user">
<Link to="/mypage" className="nav-mypage">
마이페이지
</Link>
</div>
<button className="logOut-button">로그아웃</button>
</>
)}
</nav>
);
};
export default Navigation;
5. App.tsx
import React from "react";
import AppRouter from "./AppRouter";
function App() {
return <AppRouter />;
}
export default App;
728x90
'Web > TypeScript' 카테고리의 다른 글
[TypeScript] 타입 추론, 타입 호환, 타입 단언 (0) | 2023.05.22 |
---|---|
[Typescript] Typescript에서는 enumType 대신 union을 쓰자 (0) | 2023.04.07 |
[TypeScript] React+TypeScript 로 개발 시작하기 (1) | 2022.02.16 |