element가 children의 부모 라우트이며 래퍼 역할을 한다.
import {
createBrowserRouter,
RouterProvider,
} from 'react-router-dom';
import HomePage from './pages/Home';
import ProductsPage from './pages/Products';
import RootLayout from './pages/Root';
const router = createBrowserRouter([
{
path: '/',
element: <RootLayout />,
children: [
{ path: '/', element: <HomePage /> },
{ path: '/products', element: <ProductsPage /> },
],
}
]);
function App() {
return <RouterProvider router={router} />;
}
export default App;
import { Outlet } from 'react-router-dom';
import MainNavigation from '../components/MainNavigation';
import classes from './Root.module.css';
function RootLayout() {
return (
<>
<MainNavigation />
<main className={classes.content}>
<Outlet />
</main>
</>
);
}
export default RootLayout;
Outlet
자식 라우트 요소가 렌더링되어야 할 장소를 표시한다.
import { Link } from 'react-router-dom';
import classes from './MainNavigation.module.css';
function MainNavigation() {
return (
<header className={classes.header}>
<nav>
<ul className={classes.list}>
<li>
<Link to="/">Home</Link>
</li>
<li>
<Link to="/products">Products</Link>
</li>
</ul>
</nav>
</header>
);
}
export default MainNavigation;