2023. 5. 5. 22:12ใWEB Dev/Javascript | REACT | Node.js
๐ ๋ค์ด๊ฐ๋ฉฐ
๋ฆฌ์กํธ ๋ผ์ฐํธ ํจํค์ง์ ๊ธฐ๋ณธ์ธ react-router-dom์ ์ด์ฉํด ๋ฆฌ์กํธ ํ์ด์ง์ ๋ผ์ฐํ ์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์์๋ณด์.
๐ react-router-dom๋
๋ฆฌ์กํธ ๋ผ์ฐํฐ ๋์ ํด๋ผ์ด์ธํธ์์ ํ์ด์ง ๋ผ์ฐํ ์ ๊ฐ๋ฅํ๊ฒ ํ๋ค.
์๋ฒ ์ฌ์ด๋์์ ๋ณด๋ด์ง๋ ํ์ด์ง๋ค์ ์ผ๋ฐ์ ์ผ๋ก ๋๋ ํฐ๋ฆฌ์์ ํ์ผ ๋จ์๋ก ์ด๋ํ๊ฒ ๋๋๋ฐ ๋ฆฌ์กํธ์ ๊ฐ์ ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ ๋๋ง(Client-Side-Rendering)์ ๊ฒฝ์ฐ๋ ํ๋์ ํ์ผ์์ ํ๋ฉด๋ง ๋ณ๊ฒฝ๋๋ ๊ตฌ์กฐ์ด๊ธฐ ๋๋ฌธ์ url์์ ๋ณด์ฌ์ง๋ ๊ฒฝ๋ก๋ฅผ ๋ณ๊ฒฝํ๋ค๊ณ ํด์ ํ๋ฉด์ด๋ ํ์ผ์ด ๋ณ๊ฒฝ๋์ง ์๋๋ค.
ํ์ง๋ง ํ์์ ์ํด (๊ตฌ๊ธ ๋ฑ์์ ๊ฒ์, ๋ฅ ๋งํฌ ๋ฑ์ ํ์) url์์ ํ์ด์ง๋ฅผ ์ง์ ํด์ฃผ์ด์ผ ํ๊ณ , ์ ์ ๋ ๊ทธ๊ฒ์ผ๋ก ํ๋ฉด์ ๋ณํ๋ฅผ ์ธ์งํ๋ ๊ฒฝ์ฐ๋ ์๊ธฐ ๋๋ฌธ์ ๋ผ์ฐํ ์ด ํ์ํ๋ค.
๋ฆฌ์กํธ ๋ผ์ฐํฐ ๋์ ์ด์ฉํ๋ฉด ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ฒ์ ์๋ก์ด ํ์ด์ง๋ฅผ ์์ฒญํ์ง ์๊ณ , CSS๋ JS ํ์ผ์ ์ฌํ๊ฐ ํ์ง ์๊ณ ์์ฐ์ค๋ฌ์ด ํ๋ฉด์ ๋ณํ์ url์ ๋ณํ๋ฅผ ๋ง๋ค์ด์ค ์ ์๋ค.
๐ react-router-dom ์ฌ์ฉํ๊ธฐ
1. react-router-dom ์ค์นํ๊ธฐ
//npm ์ฌ์ฉ
npm install react-router-dom
//yarn ์ฌ์ฉ
yarn add react-router-dom
2. App.js ์ createBrowserRouter๋ก ๊ฐ์ฒด ๋ง๋ค๊ธฐ
๋ฐฉ๋ฒ์ด ๋ ๊ฐ์ง์ธ๋ฐ createRoutesFromElements๋ก ๋ธ๋ผ์ฐ์ ๋ผ์ฐํฐ๋ฅผ ์์ฑ(createBrowserRouter)ํ๋ ๊ฒ๊ณผ ๊ฐ์ฒด๋ฅผ ์ด์ฉํด ๋ฐ๋ก ๋ธ๋ผ์ฐ์ ๋ผ์ฐํฐ๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
path์ url์ ๊ฒฝ๋ก๋ฅผ ์ ๋ ฅํด์ฃผ๊ณ , ํด๋น ๊ฒฝ๋ก์์ ๋ ๋๋ง ๋ ์ปดํฌ๋ํธ๋ฅผ element์ ์์ฑํด์ค๋ค. ์ด ๋ฐฉ๋ฒ์ ๊ฐ์ฒด๋ ์๋ฆฌ๋จผํธ ์์ฑ ๋ฐฉ์ ๋ชจ๋ ๋์ผํ๋ค.
import { Route, RouterProvider, createBrowserRouter, createRoutesFromElements } from "react-router-dom";
// createRoutesFromElements
// ์๋ฆฌ๋จผํธ๋ฅผ ์์ฑํ๊ณ ํด๋น ์๋ฆฌ๋จผํธ๋ฅผ ์ด์ฉํด์ ๋ธ๋ผ์ฐ์ ๋ผ์ฐํฐ ์์ฑ
const routerElement = createRoutesFromElements(
<Route>
<Route path='/' element={<HomePage/>} />
<Route path="/products" element={<ProductsPage />}/>
</Route>
);
const router = createBrowserRouter(routerElement);
// createBrowserRouter
// ๊ฐ์ฒด๋ฅผ ์ด์ฉํด์ ๋ธ๋ผ์ฐ์ ๋ผ์ฐํฐ ์์ฑ
const router = createBrowserRouter({
path: '/',
element: <HomePage />
});
3. App ์ปดํฌ๋ํธ์ RouterProvider๋ก ๋ผ์ฐํธ ๋ฟ๋ ค์ฃผ๊ธฐ
์์์ ๋ง๋ ๋ธ๋ผ์ฐ์ ๋ผ์ฐํฐ 'router'๋ฅผ RouterProvider๋ฅผ ์ด์ฉํด ์ปดํฌ๋ํธ ์ ์ฒด์ ๋ฟ๋ ค์ค๋ค. ์ด๋ Context์ ๋น์ทํ๋ค.
๋ฆฌ์กํธ Context ์์๋ณด๊ธฐ
import { Route, RouterProvider, createBrowserRouter, createRoutesFromElements } from "react-router-dom";
const App = () => {
return <RouterProvider router={router}></RouterProvider>
//return <RouterProvider router={router} />
};
export default App;
๐ ์ถ์ฒ ๋ฐ ์ฐธ๊ณ ๋ฌธ์
'WEB Dev > Javascript | REACT | Node.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ์ ์คํฌ๋ฆฝํธ] ํ์ ์คํฌ๋ฆฝํธ ์์ํ๊ธฐ - 2 (0) | 2023.10.12 |
---|---|
[ํ์ ์คํฌ๋ฆฝํธ] ํ์ ์คํฌ๋ฆฝํธ ์์ํ๊ธฐ - 1 (0) | 2023.10.11 |
[React] ๋ฆฌ๋์ค ๊ฐ๋จํ๊ฒ ์์๋ณด๊ธฐ (0) | 2023.04.17 |
[Javascript] ๊ฐ์ฒด ๋ค๋ฃจ๊ธฐ (6) | 2023.04.12 |
[React] useReducer Hook ์์๋ณด๊ธฐ (0) | 2023.04.07 |