일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- SCSS extend
- 리스트 렌더링
- SCSS use
- SCSS forward
- 프로그래머스 데브코스
- Spacer
- 폼 입력 바인딩
- 프로그래머스 프론트엔드 데브코스
- intersection opserver
- git 같은계정 다른 컴퓨터
- 이벤트 수식어
- Vue
- nextjs사용법
- netlify redirect
- vuex map
- 다른컴퓨터에서 git사용
- vue 이벤트 수신
- KDT 프로그래머스 데브코스 프론트엔드
- KDT 프로그래머스
- 고양이 사진 검색기
- SCSS import
- 리액트
- 쌓임맥락
- 프로그래머스 K_Digital Training
- react next
- 프로그래머스 데브코스 프론트엔드
- flex
- vue mixin
- vue 지역 컴포넌트
- postcss
- Today
- Total
혼자 적어보는 노트
[React] react-router-dom v6 업데이트 본문
이전에 강의를 들을 땐 v5를 기준으로 진행했었는데
react-router-dom version이 업데이트됨으로써 변경되는 사항을 숙지할 필요가 생겼다.
기존의 react-router-dom이 ver 5라면
npm i react-router-dom@6
위와 같이 기존의 버전을 업데이트 할 수 있다.
기존의 버전변경이 아닌 아닌 새롭게 설치 시에 자동으로 최신버전으로
적용된다는 점을 알아두자.
React Router v6은 react hooks를 많이 사용하기 때문에
ver6으로 업그레이드 하기 전에 react16.8이상을 사용해야 한다.
react router v5는 React 15와 호환된다.
switch대신 Routes 도입
<Routes> 안의 모든 <Route>와 <Link>는 상대적으로 변경되었다.
<Route path> 및 <Link to>가 이전 보다 간결하고 표현이 가능하다.
<Switch> 요소를 <Routes>로 변환하는법.
[App.js]
// v5
<BrowserRouter>
<Switch>
<Route exact path="/">
<Home />
</Route>
<Route path="/users">
<Users />
</Route>
</Switch>
</BrowserRouter>
// v6
<BrowserRouter>
<Routes>
<Route path="/" element={<Home />} />
<Route path="users/*" element={<Users />} />
</Routes>
</BrowserRouter>
중첩된 url의 경로를 사용하기 위해 switch와 exact 를 사용하던 v5버전과 달리
<Routes>의 내부에 배치함으로써 exact 가 삭제되었으며
라우트를 여러개 매칭시키고 싶다면 url뒤에 *를 사용한다.
기존의 component부분은 element로 변경되었다.
[User.js]
// v5
//..생략
return (
<div>
<nav>
<Link to={`${match.url}/me`}>My Profile</Link>
</nav>
<Switch>
<Route path={`${match.path}/me`}>
<OwnUserProfile />
</Route>
<Route path={`${match.path}/:id`}>
<UserProfile />
</Route>
</Switch>
</div>
);
//..v6
return (
<div>
<nav>
<Link to="me">My Profile</Link>
</nav>
<Routes>
<Route path=":id" element={<UserProfile />} />
<Route path="me" element={<OwnUserProfile />} />
</Routes>
</div>
);
중첩된 경로와 링크 설정 시 Link to 안의 경로에 match.path와 match.url을
사용하던 부분이 간결하게 변경되었다.
내부의 경로가 path="users/:id"에서 path="id"로 상대 경로로 변경
자동으로 상위 경로의 경로와 URL을 기반으로 하므로
match.url 또는 match.path를 수동으로 하지 않아도 된다.
<Switch>에서 경로의 순서를 잘못 위치 하였을 경우의 버그를 방지.
v5 앱에서의 모든 <Route children>이 v6에서 <Route 요소>로 변경되었다.
중첩된 Route의 사용 Outlet
위의 코드처럼 직접 경로 설정 외에
App.js에서 Route안에 자식태그로 중첩하는 라우터를 넣고
Outlet 라이브러리를 통해 불러올 수 있다.
// App.js
<Route path="users/*" element={<Users />}>
<Route path=":id" element={<UserProfile />} />
</Route>
//User.js
import { Link, Routes, Route, Outlet } from "react-router-dom";
//..생략
return (
<div>
<Link to="me">My Profile</Link>
<Outlet />
</div>
);
react-router-config 대신 UseRoutes사용이 가능하거나
useHistory 대신 useNavigate사용하는 등
추가적인 사항들은 공식 문서에서 알 수 있다.
'React' 카테고리의 다른 글
[React] 유튜브 API 사용법 / youtube API / axios (0) | 2021.12.28 |
---|---|
[React] Cannot read property 'map' of undefined (0) | 2021.12.27 |
[React] 사용자 지정 환경변수 추가 / secret API KEY 설정 (0) | 2021.12.23 |
[React] 텍스트 줄 바꿈 / 데이터 불러 올 때 줄 바꿈 (0) | 2021.12.22 |
[React] 부모 state변경 시 자식 컴포넌트 rerender (0) | 2021.12.21 |