<Outlet>을 사용하게 되면 컴포넌트가 중첩(nested router)되었을 경우, 상위 컴포넌트는 유지되면서 하위 컴포넌트만 렌더링할 수 있다. UI의 일관성은 유지하면서 특정 부분만 업데이트 할 수 있다.
Outlet 사용하기
1. 유지되어야 하는 상위 컴포넌트에 Outlet을 사용한다.
해당 예제에서는 유지되어야 하는 부분은 타이틀과 페이지 이동 버튼이다.
import { NavLink, Outlet } from "react-router-dom"
import styles from "./css/Page.module.css"
export default function Page() {
const activeStyle = {
color: "purple",
}
return (
<div className={styles.box}>
<h1>코딩쥐의 티스토리 예제</h1>
<h2>페이지 이동 버튼</h2>
<div>
<NavLink to={'/'} className={styles.link} style={({ isActive }) => isActive ? activeStyle : undefined}>Intro</NavLink>
<NavLink to={'/home'} className={styles.link} style={({ isActive }) => isActive ? activeStyle : undefined}>Home</NavLink>
<NavLink to={'/about'} className={styles.link} style={({ isActive }) => isActive ? activeStyle : undefined}>About</NavLink>
</div>
<div className={styles.content}>
<Outlet />
</div>
</div>
)
}
2. 중첩된 <Route>를 정의한다.
상위 컴포넌트를 element로 갖는 <Route> 안에 하위 컴포넌트를 element로 갖는 <Route>를 삽입한다.
import Home from './components/Home'
import About from './components/About'
import { Route, Routes, Link } from 'react-router-dom'
import Intro from './components/Intro'
import Page from './components/Page.jsx'
function App() {
return (
<div>
<Routes>
<Route path={'/'} element={<Page />}>
//index를 작성하여 처음 보여지는 화면을 설정한다.
<Route index element={<Intro />} />
<Route path={'/home'} element={<Home />} />
<Route path={'/about'} element={<About />} />
</Route>
</Routes>
</div>
)
}
export default App
'Frontend > - React router' 카테고리의 다른 글
React-router-dom : loader 함수를 통한 URL 가져오기 (0) | 2024.10.18 |
---|---|
React-router-dom : loader에 대해서 (0) | 2024.09.29 |
React-router-dom: createBrowserRouter에 대해서 (1) | 2024.09.26 |
React-router-dom: 리액트 라우터 훅에 대해 알아보자 (0) | 2024.09.25 |
React-router-dom: <Link>와 <NavLink>에 대해서 (0) | 2024.09.25 |
React-router-dom(리액트 라우터)에 대해서 알아보자 (0) | 2024.09.24 |