Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- webpack
- @media
- node.js
- cleancode
- node
- redux
- 그럼에도불구하고
- github
- max-width
- 자바
- media query
- coding
- 반응형 페이지
- react
- 그럼에도 불구하고
- 변수
- Servlet
- frontend
- CSS
- react-router-dom
- git
- 자바문제풀이
- 프론트엔드
- JavaScript
- 코딩테스트
- java
- TypeScript
- JS
- HTML
- 코드업
Archives
- Today
- Total
그럼에도 불구하고
[Router] Link와 Outlet 본문
오늘은 Link와 Outlet을 이용하여 간단한 다중 페이지를 만들어보겠습니다.
📌 App.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 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; | cs |
RootLayout이라는 요소에 MainNavigation이라는 요소와 children으로 지정된 나머지 요소들을 렌더링 하는 과정입니다.
📌 Root.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | import { Outlet } from "react-router-dom"; // Outlet : 자녀 라우트 요소들이 렌더링되어야 할 장소를 표시하는 역할을 한다. import MainNavigation from "../components/MainNavigation"; import classes from './Root.module.css' function RootLayout() { return ( <> <MainNavigation /> <main className={classes.content}> <Outlet /> </main> </> ); } export default RootLayout; | cs |
Outlet: 자녀 라우트 요소들이 렌더링되어야 할 장소를 표시하는 역할을 합니다.
📌 MainNavigation.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 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; | cs |
MainNavigation에서는 Link를 통해 원하는 페이지로 이동합니다.
a 태그와 다르게 Link는 to에 주소를 지정합니다.
📌 Home.js
1 2 3 4 5 6 7 8 9 10 | const HomePage = () => { return ( <> <h1>My Home Page</h1> </> ); }; export default HomePage; | cs |
📌 Products.js
1 2 3 4 5 | function ProductsPage() { return <h1>The Products Page</h1>; } export default ProductsPage; | cs |
'React > Router' 카테고리의 다른 글
[Router] action과 Form, useActionData 그리고 redirect (0) | 2023.06.12 |
---|---|
[Router] loader의 error 처리 with useRouterError & json (0) | 2023.06.10 |
[Router] loader와 useLoaderData (0) | 2023.06.10 |
[Router] useParams 사용하기 (0) | 2023.06.10 |
[Router] RouterProvider와 CreateBrowserRouter (0) | 2023.06.09 |
Comments