강의를 들으며 react-route-dom 을 실습하고 있는데 에러가 너무 많이 떠서 검색하다가 v5에서 v6으로 변경이 된 다음 여러개가 바뀌었다고 한다. 아래 주소에 가보면 v6의 달라진 점을 볼 수 있다. 위 링크에서 소스코드를 가져왔는데 위가 v5, 밑이 v6로 달라진 점을 파악할 수 있다.
// This is a React Router v5 app
import { BrowserRouter, Switch, Route, Link, useRouteMatch } from 'react-router-dom';
function App() {
return (
<BrowserRouter>
<Switch>
<Route exact path="/"><Home /></Route>
<Route path="/users"><Users /></Route>
</Switch>
</BrowserRouter>
);
}
function Users() {
// In v5, nested routes are rendered by the child component, so
// you have <Switch> elements all over your app for nested UI.
// You build nested routes and links using match.url and match.path.
let match = useRouteMatch();
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>
);
}
// This is a React Router v6 app
import { BrowserRouter, Routes, Route, Link } from 'react-router-dom';
function App() {
return (
<BrowserRouter>
<Routes>
<Route path="/" element={<Home />} />
<Route path="users/*" element={<Users />} />
</Routes>
</BrowserRouter>
);
}
function Users() {
return (
<div>
<nav>
<Link to="me">My Profile</Link>
</nav>
<Routes>
<Route path=":id" element={<UserProfile />} />
<Route path="me" element={<OwnUserProfile />} />
</Routes>
</div>
);
}
달라진점
- switch -> Routes 로 바뀌었다.
- 더이상 exect 를 쓰지 않는다. exect path 가 그냥 path로 바뀐것을 볼 수 있다
- history.push 대신 navigate를 쓴다.
- Link component 가 Link as로 바뀌었다.
'프로그래밍 > React' 카테고리의 다른 글
Mac React 컴포넌트와 props 와 state에 대해 알아보자 (0) | 2021.01.11 |
---|---|
MAC react 노드 서버와 리액트 프론트 서버 같이 키기 (0) | 2021.01.11 |
VS Code에서 리액트를 쓸 때 확장 프로그램 마켓플레이스에서 다운받아야 할 것들 (1) | 2020.12.18 |