이번 시간에는 react router dom을 이용해 여러 상황에 따라 다른 페이지로 routing하는 방법을 배워보겠습니다.
React에서 라우팅 구현을 돕는 패키지
%npm i react-router-dom
project
|--src
+|--components
+|--nav.jsx
+|--routes
+|--home.jsx
+|--about.jsx
*|--app.jsx
http://localhost:3000/#/about
과 같이 #
(Hash)을 넣어 표시합니다. Router는 Component처럼 사용할 수 있고 react-router-dom에서 제공되는 나머지 Component들은 Router안에서만 활성화된다고 보시면 됩니다.포함
되면 component property에 할당된 Component나 Route 태그 안쪽에 적힌 코드를 보여주게 됩니다. 그런데 아래에 보면 component property에 component를 전달하는 방법 말고도 Route의 자식으로 component를 전달하는 방법도 있습니다. 두가지 방식 모두 보시는 바와 같이 가능합니다. 하지만 property에 전달하는 방법은 매번 새로운 element를 만드는 것과 동일하기 때문에 자식으로 전달되는 방식이 더 추천됩니다.포함
되면 해당하는 Component를 보여준다고 했는데요. 말그대로 포함
이기 때문에 만약 현재 URL이 /about
이라고 한다면 Home Component와 About Component가 모두 한 화면에 보여지게 됩니다.import React from 'react';
import {
HashRouter as Router,
Route
} from 'react-router-dom';
import About from './routes/About';
import Home from './routes/Home';
import Nav from './components/Nav';
function App(){
return(
<Router>
<Nav />
<Route path='/' exact={true} component={Home} />
<Route path='/about'>
<About />
</Route>
</Router>
);
}
export default App;
import React from 'react';
import {Link} from 'react-router-dom';
function Nav(){
return (
<div>
<Link to='/'> Home </Link>
<Link to='/about'> About </Link>
</div>
);
}
export default Nav;
import React from 'react';
function Home(){
return (
<!--자세한 코드는 생략-->
<div>This is Home</div>
);
}
export defatult Home;
import React from 'react';
function About(){
return <div>This is About</div>
}
export defatult About;