코딩 발걸음 - 한발두발개발

리액트 Router (Feat. react router dom) 본문

개발/React.js

리액트 Router (Feat. react router dom)

한발두발개발 2021. 7. 13. 19:04
728x90

리액트에서 Router를 나누기 위해 react router dom 이라는 것을 사용한다.

 

1.설치 npm install react-router-dom을 이용해서 설치를 해준다.

 

index.js를 열고 아래 코드처럼 추가할 부분을 추가해준다

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';
import { BrowserRouter } from 'react-router-dom'; //추가할 부분

ReactDOM.render(
  <React.StrictMode>
    <BrowserRouter> {/* 추가할 부분 */}
      <App />
    </BrowserRouter> 
  </React.StrictMode>,
  document.getElementById('root')
);

// If you want to start measuring performance in your app, pass a function
// to log results (for example: reportWebVitals(console.log))
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
reportWebVitals();

 

2.Router를 사용할 App.js

 

import './App.css';
import Menu from './components/Menu'; //미리 컴포넌트를 만들어서 세팅
import CreateUser from './components/CreateUser';
import UpdateUser from './components/UpdateUser';
import DeleteUser from './components/DeleteUser';
import UserList from './components/UserList';
import Home from './components/Home';



import {Link, Route, Switch} from 'react-router-dom';

function App() {
  
  return (
    <div className="App">
      <Menu></Menu>
      {/* exact를 안쓸경우 / 같은경우 하위페이지에 계속나온다 = Home컴포넌트 페이지가 계속 겹침 */}
      {/* 사용할 부분을 Route로 감싸고 들어오려는 path와 보여줄 component를 설정한다.*/}
      <Route exact path='/' component={Home}></Route> 
      <Route path='/CreateUser' component={CreateUser}></Route>
      <Route path='/UpdateUser' component={UpdateUser}></Route>
      <Route path='/DeleteUser' component={DeleteUser}></Route>
      <Route path='/UserList' component={UserList}></Route>
    </div>
  );
}

export default App;

 

3. Menu를 통해서 페이지를 이동할 예정 - Menu.js

import './css/common.css';
import {Link, Route, Switch} from 'react-router-dom';

function Menu(){

    return(
        <div className="side">
            <div className="nav">
                <ul>
                	{/*Link to를 이용하여 이동할 경로*/}
                    <Link to="/CreateUser"><li>Create User Page</li></Link>
                    <Link to="/UpdateUser"><li>Update User Page</li></Link>
                    <Link to="/DeleteUser"><li>Delete User Page</li></Link>
                    <Link to="/UserList"><li>User List</li></Link>
                </ul>
            </div>
        </div>
    )
}

export default Menu;

화면 결과