React
๋ฆฌ์กํธ ์ค์ฒฉ ๋ผ์ฐํ (Nested Routing)
sorarar
2023. 3. 24. 00:03
320x100
๋ฐ์ํ
๐createBrowserRouter
createBrowserRouter()์ ๋ผ์ฐํ ํ path์ element๋ก ์์ฑํ ์ ์๋ค. children ์์ฑ์ผ๋ก ๋ฐฐ์ด์ ์ค์ฒฉ๋ ๋ผ์ฐํฐ(Nested Router)๋ฅผ ์ถ๊ฐํด ์ค ์ ์๋ค
"/"๋ผ๋ path๋ฅผ ๊ฐ์ง๋ฉด Root์ปดํฌ๋ํธ๊ฐ ์คํ๋๊ณ Root์ ์์ ์ปดํฌ๋ํธ๋ Home,Product๊ฐ ์๋ค.
errorElement (v5์๋ ์๊ณ , v6์๋ ์์)
- ์ฐ๋ฆฌ์ ์ปดํฌ๋ํธ์ ์๋ฌ๊ฐ ๋ฐ์ํด์ ์ถฉ๋๋๊ฑฐ๋, ์ปดํฌ๋ํธ์ ์์น๋ฅผ ์ฐพ์ง ๋ชปํ ๋ ์ฌ์ฉ.
- Root element path์๋ ์๋ฌ๋ฅผ ์ถ๊ฐํ ์ ์๋ค
- ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ค์ ๋ ๋ค๋ฅธ ์ปดํฌ๋ํธ์์ ๋ฐ์ํ๋ ๋ฌธ์ ๋ก๋ถํฐ ๋ณดํธํด์ค๋ค
- ํ๋์ ์ปดํฌ๋ํธ์์ ์๋ฌ๊ฐ ๋๋, ๋ค๋ฅธ ํ์ด์ง๋ฅผ ๋ณด๋๋ฐ ๋ฌธ์ ๊ฐ ์๊ฒ ๋๋ค
const router = createBrowserRouter([
{
path: "/",
element: <Root />,
errorElement: <Error />,
children: [
{ path: "/", element: <Home /> },
{ path: "/product", element: <Product /> },
],
},
]);
function App() {
return <RouterProvider router={router} />;
}
๐Outlet(ํน์ ์ปดํฌ๋ํธ๋ง ๋ ๋๋งํ๋ฉด์ ๋ฐ๋๋ ๊ฒฝ์ฐ ์ฌ์ฉ)
Root์์ Outlet์ ํตํด ์์ ์ปดํฌ๋ํธ๋ฅผ ๋ ์ด์์ํ ํ๊ณ ์๋ค.
=> {children} ์ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๊ฐ์ ํจ๊ณผ
function Root() {
return (
<>
<MainNav />
<main>
<Outlet />
</main>
</>
);
}
๋๋ง ๋ชฐ๋๋ Link์ ๊ธฐ๋ฅ
<Link to=".."> ์ต์์ ๊ฒฝ๋ก๋ก ์ด๋ํ๋ ๊ฒ์ ์๋ฏธ
<Link to="../"> ํ์ฌ ๊ฒฝ๋ก์์ ํ ๋จ๊ณ ์๋ก ์ด๋ํ๋ ๊ฒ์ ์๋ฏธ
์๋ฅผ ๋ค์ด, ํ์ฌ ๊ฒฝ๋ก๊ฐ /blog/react-router/example์ด๋ผ๋ฉด
<Link to="..">๋ฅผ ํด๋ฆญํ๋ฉด ๊ฒฝ๋ก๊ฐ /blog๋ก ๋ณ๊ฒฝ๋๋ฉฐ,
<Link to="../">๋ฅผ ํด๋ฆญํ๋ฉด ๊ฒฝ๋ก๊ฐblog/react-router๋ก ๋ณ๊ฒฝ๋๋ค
728x90
๋ฐ์ํ