React Router
- React ์ดํ๋ฆฌ์ผ์ด์
์์ ํด๋ผ์ด์ธํธ ์ธก ๋ผ์ฐํ
์ ์ ๊ณตํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- SPA์์ URL์ ๋ฐ๋ผ ์ปดํฌ๋ํธ์ ๋์ ๋ ๋๋ง ์ง์
- React Router์ ์ฃผ์ ๊ธฐ๋ฅ
- ์ ์ธ์ ๋ผ์ฐํธ ์ ์
- ๋์ ๋ผ์ฐํ
- Link ๋ฐ NavLink ๋ฅผ ํตํ ๋ด๋น๊ฒ์ด์
- Outlet ์ ์ฌ์ฉํ ๋ ์ด์์ ๊ตฌ์ฑ
- useNavigate , useLocation ๋ฑ ๋ด์ฅ ํ
์ ๊ณต
- nested routes ์ง์
- ํ์คํ ๋ฆฌ ๊ด๋ จ
- ์ฝ๋ ์คํ๋ฆฌํ
์ง์
- ์ธ์ฆ ๋ฐ ์ ๊ทผ ์ ์ด ๊ฐ๋ฅ
- ๋ธ๋ผ์ฐ์ ํ์คํ ๋ฆฌ ๋๋ ํด์ ํ์คํ ๋ฆฌ ์ง์
React Router ์ธ์คํจ ๋ฐ ๊ธฐ๋ณธ ๊ตฌ์ฑ
1. React Router ์ค์น
npm installl react-router-dom
- ์ค์น ๋ฒ์ ์ ์ง์ ํ๊ณ ์ถ์ ๊ฒฝ์ฐ โ@๋ฒ์ โ ์ถ๊ฐ
npm installl react-router-dom@[ํด๋น ๋ฒ์ ]
2. Router ์ปดํฌ๋ํธ ์์ฑ
- โ/src/routersโ ๊ฒฝ๋ก์ Router.jsx ํ์ผ ์์ฑ
import { createBrowserRouter, RouterProvider } from "react-router-dom";
const router = createBrowserRouter([
// router ์ ์
])
function Router() {
return <RouterProvider router={router}/>
}
export default Router;
3. main.jsx์ Raouter ๋ฑ๋ก
- ์์ฑํ Router.jsx ๋ฅผ importํ๊ณ
<Router / >๋ฅผ ์ถ๊ฐ
- ์ฐ์ง ์๋ ๊ธฐ์กด์ ์๋ App.jsx ๊ด๋ จ import๋ ๋ฉ๋ชจ๋ฆฌ ์ฐจ์ง ๋ฌธ์ ๋ก ์ญ์
import { StrictMode } from 'react';
import { createRoot } from 'react-dom/client';
import Router from './routers/Router.jsx';
createRoot(document.getElementById('root')).render(
<StrictMode>
<Router />
</StrictMode>
);
4. Router๋ก ๊ด๋ฆฌํ๊ณ ์ถ์ ์ปดํฌ๋ํธ ๋ง๋ฆ
// sc/components/List.jsx
function List() {
return (
<>
<h2>๋ฆฌ์คํธ ํ์ด์ง</h2>
</>
)
}
export default List;
// sc/components/Detail.jsx
function Detail() {
return (
<>
<h2>์์ธ ํ์ด์ง</h2>
</>
)
}
export default Detail; // exp > ์๋์์ฑ ๊ฐ๋ฅ