사용자가 요청한 URL에 따라 해당 URL에 맞는 페이지를 보여주는 것이라고 생각할 수 있다.
리액트에서는 라우팅 관련 라이브러리가 많이 있는데, 이중 가장 많이 사용한다.
//기본적인 설치 방법
npm install react-router-dom
//버전 업데이트 방법 (@버전)
npm install react-router-dom@6
//최상단에 선언
import { BrowserRouter } from 'react-router-dom';
//사용할 곳에 선언 (index에 감싸주지 않았으면 BrowserRouter를 최상단에 감싸줘야한다.)
import { BrowserRouter, Routes, Route, useNavigate, Outlet } from 'react-router-dom';
//
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
<React.StrictMode>
<BrowserRouter>
<App />
</BrowserRouter>
</React.StrictMode>
);
보여줄 페이지를 정의하는 곳
<Routes>
<Route path='/' element={<div>멤버임</div>}></Route>
<Route path='/about' element={<About />}></Route>
<Route path='/event' element={<Event />} />
<Route path='*' element={<><h1>404</h1><div>없는페이지에요~</div></>} />
</Routes>
//params 전달하기
<Route path='/about' element={<About 데이터={데이터 이름} />}></Route>
지정한 경로로 이동합니다.
<Link to="/">Home</Link>
<Link to="/detail/0">상세페이지</Link>
특정 이벤트가 발생할때 url을 조작할 수 있는 인터페이스를 제공한다.
//useNavigate는 hook 형태다
let navigate = useNavigate();
<Nav className="me-auto">
<Nav.Link onClick={()=>{navigate('/')}}>Home</Nav.Link>
<Nav.Link onClick={()=>{navigate('/about')}}>About</Nav.Link>
<Nav.Link onClick={()=>{navigate('/detail/0')}}>Detail</Nav.Link>
<Nav.Link onClick={()=>{navigate('/event')}}>Event</Nav.Link>
</Nav>
앞으로 가기, 뒤로 가기 기능을 제공한다.
<button onClick={() => navigate(-2)}> Go 2 pages back </button>
<button onClick={() => navigate(-1)}> Go back </button>
<button onClick={() => navigate(1)}> Go forward </button>
<button onClick={() => navigate(2)}> Go 2 pages forward </button>
특정 라우터안에 서브 페이지로 보여줄 자식 컴포넌트들을 지정해줄 수 있다.
부모 컴포넌트의 작성된 태그들과 함께 보여지며 아웃렛(Outlet)을 선언한 곳에 컴포넌트가 나타난다.
<Route path='/about' element={<About />}>
<Route path='member' element={<div>멤버임</div>}/>
</Route>
function About(){
return(
<>
<h4>회사정보입니다.</h4>
<Outlet></Outlet>
</>
)
}
[React] 6. React Router (리액트 라우터) 사용하기
6. [React] 6. React Router (리액트 라우터) 사용하기 안녕하세요. 갓대희 입니다. 이번 포스팅은 [ React에서 페이지 이동 처리 하는 방법 ] 입니다. : ) 우리가 흔히 말하는 "페이지 이동"이라는 기능을
goddaehee.tistory.com
댓글 영역