๐งฉ React Router๋ ์ ํ์ํ ๊น?
โ SPA๋
SPA (Single Page Application)๋ ๋ง ๊ทธ๋๋ก
ํ๋์ HTML ํ์ผ๋ก ๊ตฌ์ฑ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ฏธํ๋ค.
ํ์ด์ง๋ฅผ ์ด๋ํด๋, ์ค์ ๋ก๋ ์ HTML ํ์ผ์ ๋ฐ์์ค๋ ๊ฒ ์๋๋ผ,
๊ธฐ์กด HTML ์์์ JavaScript๋ก ํ๋ฉด์ ๋ฐ๊ฟ์ฃผ๋ ๋ฐฉ์์ธ ๊ฒ์ด๋ค.
์ฆ, ์ ์ ์ ์ฅ์์๋ 'ํ์ด์ง๊ฐ ์ด๋ํ ๊ฒ์ฒ๋ผ' ๋ณด์ด์ง๋ง,
์ค์ ๋ก ๋ธ๋ผ์ฐ์ ๊ฐ ํ์ด์ง๋ฅผ ์๋ก ๋ถ๋ฌ์ค์ง๋ ์๋๋ค.
์๋ฅผ ๋ค์ด ์ ์ ๊ฐ www.example.com/login์ ์ ์ ์ํ๋ฉด,
๊ธฐ์กด ๋ฐฉ์ (MPA, Multi Page Application)์์๋ ์๋ฒ๊ฐ login.html์ ์๋ก ๋ณด๋ด์คฌ์ง๋ง,
SPA์์๋ ์ด๋ฏธ ๋ก๋ฉ๋ index.html ์์์ React๊ฐ LoginPage ์ปดํฌ๋ํธ๋ฅผ ๋ณด์ฌ์ค๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ์ ์ดํ๋ ๊ฒ ๋ฐ๋ก React Router ์ด๋ค.
๐ฃ๏ธ React Router๊ฐ ํ๋ ์ผ
React Router๋ ํ์ฌ ๋ธ๋ผ์ฐ์ ์ฃผ์(URL)์ ๋ฐ๋ผ์
์ด๋ค React ์ปดํฌ๋ํธ๋ฅผ ๋ณด์ฌ์ค์ง ๊ฒฐ์ ํด์ค๋ค.
๐ ์ด๋ ๊ฒ ์๊ฐํ๋ฉด ์ฝ๋ค.
| URL ์ฃผ์ | ๋ณด์ฌ์ค React ์ปดํฌ๋ํธ |
| / | <MainPage /> |
| /login | <LoginPage /> |
| /products/11 | <ProductDetail /> |
์ด๊ฒ์ ์ง์ ์ ์ดํ๋ ๊ฒ <Route> ์ปดํฌ๋ํธ์ด๊ณ ,
์ด ์ ์ฒด ๊ธฐ๋ฅ์ ๋์ํ๊ฒ ํด์ฃผ๋ ์ปจํ ์ด๋๊ฐ <BrowserRouter>์ด๋ค.
๐ React Router๊ฐ ์์ผ๋ฉด ์ด๋ป๊ฒ ๋ ๊น?
React Router ์์ด ๋จ์ํ HTML์ <a href="/login">๋ก๊ทธ์ธ</a> ์ฒ๋ผ ๋งํฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น?
๐ ๋ธ๋ผ์ฐ์ ๋ ์ง์ง๋ก ์๋ฒ์ /login ๊ฒฝ๋ก์ HTML ํ์ผ์ ์์ฒญํ๊ฒ ๋๋ค.
ํ์ง๋ง ์ด ๋ฐฉ์์ ํ์ด์ง ์ ์ฒด๊ฐ ์๋ก๊ณ ์นจ๋๋ฉด์,
React ๋ด๋ถ์ ์ํ๋ ๋ผ์ฐํ ์ ๋ณด๊ฐ ๋ชจ๋ ์ด๊ธฐํ๋๊ธฐ ๋๋ฌธ์
React ์ฑ์ด ์งํฅํ๋ SPA ๊ตฌ์กฐ์๋ ๋ง์ง ์๋๋ค.
โ ๊ฒฐ๋ก
React Router๋ SPA ๊ตฌ์กฐ์์
์ฃผ์๋ ๋ฐ๋์ง๋ง ํ์ด์ง ์ ์ฒด๋ฅผ ์๋ก๊ณ ์นจํ์ง ์๊ณ ,
ํ๋ฉด๋ง ์์ฐ์ค๋ฝ๊ฒ ์ ํ๋๋ ๋ถ๋๋ฌ์ด ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ๋ฅํ๊ฒ ํด์ฃผ๋ ํต์ฌ ๋๊ตฌ์ด๋ค.
๐ง ์ค์ ๋ผ์ฐํ ์ฝ๋ ์์
import React from 'react';
import { BrowserRouter, Routes, Route } from 'react-router-dom';
import MainPage from '@/pages/main/MainPage';
import LoginPage from '@/pages/login/LoginPage';
const App = () => {
return (
<BrowserRouter>
<Routes>
<Route path="/" element={<MainPage />} />
<Route path="/login" element={<LoginPage />} />
</Routes>
</BrowserRouter>
);
};
export default App;
1๏ธโฃ <BrowserRouter>
๋ธ๋ผ์ฐ์ ์ ์ฃผ์(URL)๋ฅผ ๊ฐ์งํ๊ณ , ์ปดํฌ๋ํธ๋ฅผ ๋ ๋๋งํ ์ ์๋๋ก ๋์์ฃผ๋ ์ปจํ ์ด๋์ด๋ค.
์ ์ฒด ์ฑ์ ๊ฐ์ธ์ React Router ๊ธฐ๋ฅ์ ํ์ฑํํ๋ค.
2๏ธโฃ <Routes>
์ฌ๋ฌ ๊ฐ์ <Route> ๋ค์ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ๋ ์ญํ ์ ํ๋ค.
3๏ธโฃ <Route path="/" element={<MainPage />} />
path="/"๋ ๋ฃจํธ ๊ฒฝ๋ก, ์ฆ http://localhost:3000/์ ํด๋นํ๋ฉฐ,
element={<MainPage />}๋ ํด๋น ๊ฒฝ๋ก์ผ ๋ ๋ณด์ฌ์ค ์ปดํฌ๋ํธ๋ฅผ ์ง์ ํ๋ค.
์ฆ, ๊ตฌ์กฐ์ ์ผ๋ก ๋ณด๋ฉด ์๋์ ๊ฐ๋ค.
| URL ์ฃผ์ | ๋ ๋๋ง ๋๋ ์ปดํฌ๋ํธ |
| / | MainPage |
| /login | LoginPage |
'๐ป๊ณต๋ถ ๊ธฐ๋ก > ๐ Frontend' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Frontend] ํจํค์ง ๋งค๋์ ์ ๋์ ๊ณผ์ (2) | 2025.06.04 |
|---|---|
| [Frontend] ํจํค์ง ๋งค๋์ (1) | 2025.06.03 |
| [Frontend] ๋ ๋๋ง์ 3๊ฐ์ง ๋ฐฉ์: CSR, SSR, SSG (2) | 2025.06.01 |
| [Frontend] ๋ ๋๋ง(Rendering)์ด๋ (0) | 2025.05.31 |
| [Frontend] React๋ (1) | 2025.05.27 |