-
[React] 리액트 라우터 - RouterProvider와 CreateBrowserRouterFramework & Library/React 2023. 3. 10. 20:01728x90반응형

서론
이번에는 원티드 프리온보딩을 통해서 지금까지 프로젝트에 사용했던 라우터 방식말고
새로운 방식이 있다는 것을 알게 되어서 이 글을 작성하면서 정리하게 되었습니다.
이번에 정리하면서 작업해 볼 방식은React Router v6.4에 추가된 방식입니다.기존 방식
import { BrowserRouter } from 'react-router-dom' const root = ReactDOM.createRoot(document.getElementById('root')) root.render( <BrowserRouter> // 최상단 root에서 BrowserRouter로 감싸기 <App /> </BrowserRouter> )import { Route, Routes } from 'react-router-dom' const App = () => { return ( <Routes> <Route path='/' element={<Layout />} > // outlet을 이용한 중첩라우팅 <Route index element={<Main />} /> <Route path='/pageA' element={<PageA />} /> <Route path='/pageB' element={<PageB />} /> <Route path='/pageC' element={<PageC />} /> </Route> </Routes> ) }RouterProvider와 CreateBrowserRouter
0. 폴더구조

1. router.jsx
기존 방식과는 다르게 새로운 컴포넌트를 만들어서
route링크 들만 따로 분리를 시켜서 관리하도록 했습니다.
기존 구성에서 중첩 되어있는 경로는children을 이용해서 중첩을 사용할 수 있습니다.import Layout from '../Layout' import Main from '../pages/Main'; import PageA from '../pages/PageA'; import PageB from '../pages/PageB'; import PageC from '../pages/PageC'; export const RouterInfo = [ { path: "/", element: <Layout />, children: [ { index: true, element: <Main />, label: 'main' }, { path: "/pageA", element: <PageA />, label: 'A' }, { path: "/pageB", element: <PageB />, label: 'B' }, { path: "/pageC", element: <PageC />, label: 'C' }, ] }, ]2. createBrowserRouter & RouterProvider
우선 기존의 방식처럼
BrowserRouter로 감싸지 않습니다.RouterProvider를 이용해서 구성요소들을 전달하고 활성화 합니다.import { createBrowserRouter, RouterProvider, } from 'react-router-dom'; import { RouterInfo } from './util/router'; const RouterObject = createBrowserRouter(RouterInfo) //CreateBrowserRouter로 경로 지정 const root = ReactDOM.createRoot(document.getElementById('root')); root.render( <React.StrictMode> <RouterProvider router={RouterObject} /> </React.StrictMode> );참고
728x90반응형'Framework & Library > React' 카테고리의 다른 글
[React] 리액트 Checkbox 문제 해결하기! - 전체 선택/해제 기능 (1) 2023.03.20 [React, TypeScript] 리액트 + 타입스크립트에서 Props 전달하는 방법 - IntrinsicAttributes 오류 (0) 2023.03.14 [React] Vite 사용하기! (0) 2023.03.07 [React] React 개발환경 세팅하기 - React Router 설치 및 간단정리 (0) 2023.03.01 [React] 리액트에서 Set 이용한 Checkbox 상태관리하기! (2) 2023.02.28