320x100
๋ฐ์ํ
1. ๐createBrowserRouter
createBrowserRouter()์ ๋ผ์ฐํ ํ path์ element๋ก ์์ฑํ ์ ์๋ค. children ์์ฑ์ผ๋ก ๋ฐฐ์ด์ ์ค์ฒฉ๋ ๋ผ์ฐํฐ(Nested Router)๋ฅผ ์ถ๊ฐํด ์ค ์ ์๋ค
"/"๋ผ๋ path๋ฅผ ๊ฐ์ง๋ฉด Root์ปดํฌ๋ํธ๊ฐ ์คํ๋๊ณ Root์ ์์ ์ปดํฌ๋ํธ๋ Home,Product๊ฐ ์๋ค.
errorElement (v5์๋ ์๊ณ , v6์๋ ์์)
- ์ฐ๋ฆฌ์ ์ปดํฌ๋ํธ์ ์๋ฌ๊ฐ ๋ฐ์ํด์ ์ถฉ๋๋๊ฑฐ๋, ์ปดํฌ๋ํธ์ ์์น๋ฅผ ์ฐพ์ง ๋ชปํ ๋ ์ฌ์ฉ.
- Root element path์๋ ์๋ฌ๋ฅผ ์ถ๊ฐํ ์ ์๋ค
- ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ค์ ๋ ๋ค๋ฅธ ์ปดํฌ๋ํธ์์ ๋ฐ์ํ๋ ๋ฌธ์ ๋ก๋ถํฐ ๋ณดํธํด์ค๋ค
- ํ๋์ ์ปดํฌ๋ํธ์์ ์๋ฌ๊ฐ ๋๋, ๋ค๋ฅธ ํ์ด์ง๋ฅผ ๋ณด๋๋ฐ ๋ฌธ์ ๊ฐ ์๊ฒ ๋๋ค
<bash />
const router = createBrowserRouter([
{
path: "/",
element: <Root />,
errorElement: <Error />,
children: [
{ path: "/", element: <Home /> },
{ path: "/product", element: <Product /> },
],
},
]);
function App() {
return <RouterProvider router={router} />;
}
1.1. ๐Outlet(ํน์ ์ปดํฌ๋ํธ๋ง ๋ ๋๋งํ๋ฉด์ ๋ฐ๋๋ ๊ฒฝ์ฐ ์ฌ์ฉ)
Root์์ Outlet์ ํตํด ์์ ์ปดํฌ๋ํธ๋ฅผ ๋ ์ด์์ํ ํ๊ณ ์๋ค.
=> {children} ์ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๊ฐ์ ํจ๊ณผ
<bash />
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
๋ฐ์ํ
'React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
React-hook-form (0) | 2023.06.18 |
---|---|
๋ฆฌ์กํธ ์ธํ ์๋ฌ-Warning: A component is changing an uncontrolled input to be controlled. (0) | 2023.04.26 |
axios ์ธํฐ์ ํฐ๋ก ์๋๋ก๊ทธ์ธ ๊ตฌํ (6) | 2023.03.17 |
๋๋ฆฐ์ปดํฌ๋ํธ ์ฑ๋ฅ ํฅ์๊ฐ๋ฅํ useDeferredValue& useTransition(REACT 18) (6) | 2023.03.13 |
ref๋ฅผ prop์ผ๋ก ๋๊ธฐ๊ธฐ( forWardRef) (6) | 2023.03.10 |