티스토리 뷰
라우팅이란?
사용자가 요청한 URL에 따라 해당 URL에 맞는 페이지를 보여주는 것.
리액트에서는 라우팅 관련 라이브러리가 많이 있지만 그중 리액트 라우터(React Router)에 대해 아주 간략히 다뤄보겠다.
SPA(Single Page Application)
리액트는 SPA방식이다.
- 기존 웹 페이지 처럼(MPA 방식) 여러 개의 페이지를 사용, 새로운 페이지를 로드하는 방식이 아니다.
- 주소를 옮길 때 새로운 페이지를 로드하지 않고 하나의 페이지 안에서 필요한 데이터만 가져오는 형태를 가진다.(하나의 html으로 브라우저 주소창대로 다른 페이지를 보여줄 수 있다. )
React-Router는 이런 신규 페이지를 불러오지 않는 상황에서 각각의 url에 따라 선택된 데이터를 하나의 페이지에서 렌더링 해주는 라이브러리라고 볼 수 있다.
라우팅 처리
패키지 설치 ( yarn add react-router-dom@5.2.1 )
1. index.js에 BrowserRouter 적용
웹 브라우저가 가지고 있는 주소 관련 정보를 props로 넘겨준다.
import { BrowserRouter } from "react-router-dom";
ReactDOM.render(
<BrowserRouter>
<App />
</BrowserRouter>
document.getElementById("root")
);
2. App.js
- import Route
- exact 사용해 "/" 이후 경로 포함시키지 않기
- useHistory Hook 사용 (. push("/home"),. goback() )
- NotFound.js 생성 + import Swich
정하지 않은 주소로 들어갔을 경우 대비,
NotFound component를 Route에 주소 없이 연결해준다.
import React from "react";
import { Route, Switch } from "react-router-dom";
import NotFound from "./NotFound";
function App() {
return (
<div className="App" style={{ maxWidth: "350px", margin: "auto" }}>
<Switch>
<Route path="/" exact>
<Home />
</Route>
<Route component={NotFound} />
</Switch>
</div>
);
}
- useHistory Hook 사용해서 페이지 이동 (.push("/home"), .goback() )
import React from "react";
import { useHistory } from "react-router-dom";
const Home = (props) => {
const history = useHistory();
return (
<>
<button
onClick={() => {
history.push("/contact");
}}
>
contact page
</button>
</>
);
};
export default Home;
'Frontend > React' 카테고리의 다른 글
[React date picker] 리액트 Date picker 커스텀하기 (with TypeScript) (0) | 2022.10.08 |
---|---|
[Swiper-slide] 리액트에서 Swiper 사용하여 슬라이더/캐러셀 구현하기 (0) | 2022.10.08 |
[React-Query] 서버에서 받은 파일 데이터 다운로드 기능 구현하기 (0) | 2022.07.27 |
[React] React Redux (0) | 2022.03.25 |
[React] React Hook (useRef(), useEffect(), useState()) (0) | 2022.03.25 |
- Total
- Today
- Yesterday
- 자바스크립트
- 항해99
- 자바스크립트알고리즘
- React Query
- 실전프로젝트
- 네트워크
- 자바스크립트 클로저
- 모두를위한컴퓨터과학
- 프로그래머스 베스트앨범 자바스크립트
- reactquery
- 클로저
- python
- network
- javascript
- 리액트네이티브
- React
- 프로그래머스 자바스크립트
- 모두를 위한 컴퓨터 과학
- 백준
- 알고리즘자바스크립트
- 타입스크립트
- github
- cs50
- 리액트
- 프로그래머스
- 무한스크롤
- GIT
- html
- 자바스크립트 비동기 처리
- css
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |