Web/React
[React] Nested Routes
동띵
2022. 10. 13. 12:26
중첩 라우팅(nested routing)이란 여러 유사한 페이지를 필요로 할 때 사용된다.
예를 들어, 회사 정보를 보여주는 /about 페이지가 있는데
멤버 정보를 보여주는 /about/member 페이지와
회사 위치 정보를 보여주는 /about/location 페이지도 만든다고 하면
import React from "react";
import { Route, Routes, BrowserRouter } from 'react-router-dom';
function App() {
return (
<BrowserRouter>
<Routes>
<Route path="/about" element={<About />}/>
<Route path="/about/member" element={<div>멤버임</div>}/>
<Route path="/about/location" element={<div>위치 정보임</div>}/>
</Routes>
</BrowserRouter>
);
}
export default App;
이런 식으로 코드를 작성할 수 있다.
하지만 위 방법이 아닌 중첩 라우팅을 사용하면 라우트 작성이 더 간단해지고,
중첩된 element들을 동시에 보여준다는 장점이 있다.
import React from "react";
import { Route, Routes, BrowserRouter } from 'react-router-dom';
function App() {
return (
<BrowserRouter>
<Routes>
<Route path="/about" element={<About />}>
<Route path="member" element={<div>멤버임</div>}/>
<Route path="location" element={<div>위치 정보임</div>}/>
</Route>
</Routes>
</BrowserRouter>
);
}
export default App;
중첩 라우팅을 사용하여 코드를 작성한 경우,
/about/member 페이지에 접속하면
/about 페이지와 /about/member 페이지의 elements를 보여주는 것이다.
하지만 element를 동시에 보기 위해서는
Outlet 태그를 사용해줘야 한다.
중첩된 element를 <About /> 페이지에 보여주고 싶은 곳에
<Outlet></Outlet>을 작성해주면 된다.
import React from 'react';
import { Outlet } from 'react-router-dom';
function About() {
return (
<div>
회사 정보임
<Outlet></Outlet>
</div>
);
}
export default About;
즉, 중첩 라우팅을 사용하면 /about/member 페이지 접속 시에
회사 정보와 멤버 정보를 둘 다 보여줄 수 있으며
멤버 정보를 보여줄 위치도 지정할 수 있다.
/about 접속 시 (회사 정보만 나옴)
/about/member 접속 시 (회사 정보와 멤버 정보 나옴)