2. Routes
Keyword
๋ผ์ฐํฐ๋?
React Router
Browser Router
Route
Memory Router
1. ๋ผ์ฐํฐ๋?
์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉ์๊ฐ ์์ฒญํ URL ๊ฒฝ๋ก์ ํ์ด์ง๋ก ์ฐ๊ฒฐํ๋ ์์คํ ์ ๋งํ๋ค.
์น ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ด์ง ๋๋ View๊ฐ์ ์ ํ ๋ฐ ๊ด๋ฆฌ๋ฅผ ๋ด๋นํ๋ค.
2. React Router
๋ฆฌ์กํธ ์ ํ๋ฆฌ์ผ์ด์ ์์ Clinet Side Routing์ ๊ตฌํํ๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค.
Clinet Side Routing
์ด๊ธฐ ํ์ด์ง ๋ก๋ฉ ์ดํ์๋ ์๋ก์ด ํ์ด์ง๋ฅผ ์๋ฒ์ ์์ฒญํ ํ์๊ฐ ์์ด ๋ธ๋ผ์ฐ์ ์์ ๋ผ์ฐํ ์ ์ฒ๋ฆฌํ๋ค.
๋ค๋ฅธ ํ์ด์ง๋ก ์ด๋ํ๋ฉด Javascript๋ฅผ ํตํด ์ปจํ ์ธ ๋ฅผ ๋์ ์ผ๋ก ๋ ๋๋งํ๋ค.
๋น ๋ฅด๊ณ ๋ถ๋๋ฌ์ด ํ์ด์ง ์ ํ์ ์ ๊ณตํ๋ค.
๋ค๋ง ์ด๊ธฐ ํ์ด์ง ๋ก๋ฉ์ ํ์ํ ๋ฆฌ์์ค๋ฅผ ๋ค์ด๋ก๋ํ๋ฏ๋ก ์ด๊ธฐ ๋ก๋ฉ ์๋๊ฐ ๋๋ฆด ์ ์๋ค.
JS๋ฅผ ์ด์ฉํด ์ปจํ ์ธ ๋ฅผ ๋์ ์ผ๋ก ์์ฑํ๊ธฐ ๋๋ฌธ์ SEO ์ต์ ํ ๋ฌธ์ ๊ฐ ์๋ค.
VS SSR(Server Side Routing)
ํ์ด์ง๋ฅผ ์ ํํ ๋ ๋ง๋ค ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด๊ณ ์๋ก์ด ํ์ด์ง๋ฅผ ์๋ฒ์์ ๋ ๋๋งํ ํ ๋ธ๋ผ์ฐ์ ์ ์ ๋ฌํ๋ค.
ํ์ด์ง ์ ํ๋ง๋ค HTML ๋ฌธ์๋ฅผ ๋ฐ์์ผ ํ๋ฏ๋ก ํ์ด์ง ๋ฆฌ๋ก๋ฉ์ด ๋ฐ์ํ๋ค.
๊ฐ ํ์ด์ง๋ฅผ ์๋ฒ๋ก๋ถํฐ ๋ฐ์์ค๊ธฐ ๋๋ฌธ์ SEO ์ต์ ํ์ ์ฉ์ดํ๋ค.
2.1 Browser Router
๋ธ๋ผ์ฐ์ ์ history API์ ์ฌ์ฉํ์ฌ URL ๊ฒฝ๋ก์ ๋ฐ๋ผ ํ์ด์ง ์ ํ์ ๊ด๋ฆฌํ๋ค.
import { BrowserRouter } from 'react-router-dom';
root.render((
<BrowserRouter>
<App />
</BrowserRouter>
));
2.2 Route
URL ๊ฒฝ๋ก์ ๋ฐ๋ผ Route ์ปดํฌ๋ํธ๋ฅผ ๋ ๋๋งํ๋๋ก ์ง์ ํ ์ ์๋ค.
import { Routes, Route } from 'react-router-dom';
function App() {
return (
<div>
<Header />
<main>
<Routes>
<Route path="/" element={<HomePage />} />
<Route path="/about" element={<AboutPage />} />
</Routes>
</main>
<Footer />
</div>
);
}
2.3 Memory Router
๋ธ๋ผ์ฐ์ ์ฃผ์์ฐฝ์ URL์ ์กฐ์ํ์ง ์๊ณ , ๋ฉ๋ชจ๋ฆฌ์์ ๋ผ์ฐํ ์ ๊ตฌ์ฑํ ์ ์๋ค.
ํ ์คํธ ์ฝ๋, ๋ชจ๋ฐ์ผ ์ฑ์์ ๋ธ๋ผ์ฐ์ URL์ ๋ณ๊ฒฝํ์ง ์๊ณ ๋ผ์ฐํ ์ ์๋ฎฌ๋ ์ด์ ํ ์ ์๋ค.
initialEntries ์์ฑ์ Memory Router๊ฐ ์ด๊ธฐํ ๋ ๋ ๋ผ์ฐํ ์ ์ฌ์ฉ๋ ๊ฒฝ๋ก ๋ฐฐ์ด์ ์ง์ ํ๋ค.
describe('App', () => {
function renderApp(path: string) {
render((
<MemoryRouter initialEntries={[path]}>
<App />
</MemoryRouter>
));
}
context('when the current path is โ/โ', () => {
it('renders the home page', () => {
renderApp('/');
screen.getByText(/Hello/);
});
});
context('when the current path is โ/aboutโ', () => {
it('renders the about page', () => {
renderApp('/about');
screen.getByText(/About/);
});
});
});
์ถ๊ฐ ํค์๋
Routes
Routes ์ปดํฌ๋ํธ๋ ์ฌ๋ฌ Route๋ฅผ ๊ฐ์ธ์ ๊ทธ ์ค ๊ท์น์ด ์ผ์นํ๋ ๋ผ์ฐํธ ๋จ ํ๋๋ง์ ๋ ๋๋ง ์์ผ์ฃผ๋ ์ญํ ์ ํ๋ค.
Last updated