๋ชจ๋ React Router ์น ํ๋ก์ ํธ์ ๊ถ์ฅ๋๋ ๋ผ์ฐํฐ์ ๋๋ค.
์ฌ์ฉ๋ฒ
Router.jsx
const router = createBrowserRouter([
{
path:"/", //์์ ์ปดํฌ๋ํธ ๊ฒฝ๋ก
element:<Root />,
children : [ //ํ์ ์ปดํฌ๋ํธ ๊ฒฝ๋ก
{
path : "",
element : <Home />
},
{
path : "about",
element : <About />
}
]
}
])
index.jsx
RouterProvider๋ router๋ผ๊ณ ๋ถ๋ฆฌ์ฐ๋ prop์ ๊ฐ์ง๋ค.
import React from 'react';
import ReactDOM from 'react-dom/client';
import { RouterProvider } from 'react-router-dom';
import router from './Router';
const root = ReactDOM.createRoot(
document.getElementById('root') as HTMLElement
);
root.render(
<React.StrictMode>
<RouterProvider router={router} />
</React.StrictMode>
);
Root.jsx
import { Outlet } from "react-router-dom";
import { Header } from "./components/Header";
function Root(){
return(
<div className="App">
<Header />
<Outlet />
</div>
)
}
export default Root;
Outlet
์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค์ด ์ฃผ์ด์ผ createBrowserRouter
์์ ์ค์ ํ children์ต์
์์ ์ค์ ํ ๊ฒฝ๋ก(path:"", path:"about")๋ก ํ์ ์ปดํฌ๋ํธ๋ค์ด ๋ ๋๋ง๋๋ค.
์ค์ ํ ์ปดํฌ๋ํธ์ ์๋ฌ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ์ ์๋ชป๋ ๊ฒฝ๋ก๋ก ์ ์ํ์ฌ ์๋ฌ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ์ค์ ํ ์๋ฌ์ ๋ง์ถฐ์ง ์ปดํฌ๋ํธ๋ฅผ ๋ณด์ฌ์ค๋ค.
์ฌ์ฉ๋ฒ
const router = createBrowserRouter([
{
path:"/",
element : <Root />,
children : [
{
path:"",
element:<Home />,
errorElement : <ErrorComponent />
//Home ์ปดํฌ๋ํธ๊ฐ ์๋ฌ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ <ErrorComponent />์ปดํฌ๋ํธ๋ฅผ ๋ณด์ฌ์ค๋ค.
},
{
path:'about',
element:<About />,
}
],
errorElement : <NotFound />
// ๊ธฐ๋ณธ๊ฒฝ๋ก์์ ์์์ ํด๋นํ์ง ์๋ ์๋ชป๋ ๊ฒฝ๋ก๋ฅผ ์
๋ ฅํ์ ๋ <NotFound />์ปดํฌ๋ํธ๋ฅผ ๋ณด์ฌ์ค๋ค.
}
])