2.Routes
๋ผ์ฐํฐ๋?
์น ๊ฐ๋ฐ ๋งฅ๋ฝ์์ ๋ผ์ฐํฐ๋ ๋ค์ด์ค๋ ์์ฒญ์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ ํ ์ฒ๋ฆฌ๊ธฐ ๋๋ ์ปจํธ๋กค๋ฌ๋ก ๋ผ์ฐํ ํ๋ ๋ฐ ๋์์ด ๋๋ ์ํํธ์จ์ด ๊ตฌ์ฑ ์์ ๋๋ ํ๋ ์์ํฌ๋ค. ์๋ต์ ์์ฑํ๋ ํน์ ์์ ์ด๋ ๊ธฐ๋ฅ์ ์๋ก ๋ค๋ฅธ URL ๋๋ ๊ฒฝ๋ก๋ฅผ ๋งคํํ๋ ๋ฐฉ๋ฒ์ ๊ฒฐ์ ํ๋ ํธ๋ํฝ ๋๋ ํฐ ์ญํ ์ ํ๋ค.
URL ๋ผ์ฐํ : ๋ผ์ฐํฐ์ ์ฃผ์ ์ฑ ์์ URL ๋๋ ๊ฒฝ๋ก๋ฅผ ์น ์ ํ๋ฆฌ์ผ์ด์ ๋ด์ ํน์ ์์ ๋๋ ํธ๋ค๋ฌ์ ๋งคํํ๋ ๊ฒ์ด๋ค. ์ฌ์ฉ์๊ฐ ํน์ URL์ ์์ฒญํ๋ฉด ๋ผ์ฐํฐ๋ URL์ ๊ฒ์ฌํ๊ณ ํด๋น ์์ฒญ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์คํํด์ผ ํ๋ ์ฝ๋๋ฅผ ๊ฒฐ์ ํ๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ์์ฉ ํ๋ก๊ทธ๋จ์์ ๋ค์ํ ๊ฒฝ๋ก๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋ ผ๋ฆฌ์ ์ด๊ณ ์กฐ์ง์ ์ธ ๊ตฌ์กฐ๋ฅผ ๋ง๋ค ์ ์๋ค.
์ฒ๋ฆฌ๊ธฐ ๋๋ ์ปจํธ๋กค๋ฌ ๋งคํ: ๋ผ์ฐํฐ๋ URL๊ณผ ํด๋น URL์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์คํํด์ผ ํ๋ ์ฝ๋ ์ฌ์ด์ ์ฐ๊ฒฐ์ ์ค์ ํ๋ค. ํน์ URL ๋๋ ํจํด์ ํด๋น ์ฒ๋ฆฌ๊ธฐ ๋๋ ์ปจํธ๋กค๋ฌ ๊ธฐ๋ฅ๊ณผ ์ฐ๊ฒฐํ๋ ๊ท์น ๋๋ ๋งคํ์ ์ ์ํ๋ค. ์์ฒญ์ด ์ ์๋ ๊ฒฝ๋ก์ ์ผ์นํ๋ฉด ๊ด๋ จ ์ฒ๋ฆฌ๊ธฐ ๋๋ ์ปจํธ๋กค๋ฌ๊ฐ ํธ์ถ๋์ด ์ ์ ํ ์๋ต์ ์์ฑํ๋ค.
๊ฒฝ๋ก ๋งค๊ฐ๋ณ์: ๋ผ์ฐํฐ๋ URL์ ๋์ ์ธ๊ทธ๋จผํธ๋ฅผ ์ถ์ถํ์ฌ ํธ๋ค๋ฌ ๋๋ ์ปจํธ๋กค๋ฌ ๊ธฐ๋ฅ์ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌํ ์ ์๋ ๊ฒฝ๋ก ๋งค๊ฐ๋ณ์ ๊ฐ๋ ์ ์ง์ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ์๋ฅผ ๋ค์ด ๋ธ๋ก๊ทธ ์ ํ๋ฆฌ์ผ์ด์ ์์ "/posts/:id"์ ๊ฐ์ ๊ฒฝ๋ก๋ ์ ๊ณต๋ ID๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํน์ ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์ ๊ฐ์ ธ์ ํ์ํ๋ ํธ๋ค๋ฌ ํจ์์ ๋งคํ๋ ์ ์๋ค.
HTTP ๋ฐฉ๋ฒ: ๋ผ์ฐํฐ๋ ์์ฒญ์ ์ฌ์ฉ๋๋ HTTP ๋ฐฉ๋ฒ(์: GET, POST, PUT, DELETE)์ ๊ณ ๋ คํ์ฌ ์ ์ ํ ์ฒ๋ฆฌ๊ธฐ ๋๋ ์ปจํธ๋กค๋ฌ ๊ธฐ๋ฅ์ ๊ฒฐ์ ํ๋ค. ์ด๋ฅผ ํตํด ๋์ผํ URL์์ ์๋ก ๋ค๋ฅธ ์ก์ ์ ์๋ก ๋ค๋ฅธ HTTP ๋ฉ์๋์ ์ฐ๊ฒฐํ ์ ์๋ค. ์๋ฅผ ๋ค์ด "/users"์ ๋ํ GET ์์ฒญ์ ์ฌ์ฉ์ ๋ชฉ๋ก์ ๊ฒ์ํ ์ ์๋ ๋ฐ๋ฉด ๋์ผํ URL์ ๋ํ POST ์์ฒญ์ ์ ์ฌ์ฉ์๋ฅผ ์์ฑํ ์ ์๋ค.
๋ฏธ๋ค์จ์ด ํตํฉ: ๋ผ์ฐํฐ๋ ์ข ์ข ๋ฏธ๋ค์จ์ด ๊ธฐ๋ฅ์ ์ง์ํ๋ค. ๋ฏธ๋ค์จ์ด ๊ธฐ๋ฅ์ ๋ฉ์ธ ํธ๋ค๋ฌ ๋๋ ์ปจํธ๋กค๋ฌ ๊ธฐ๋ฅ ์ ํ์ ์คํํ ์ ์๋ ์ค๊ฐ ๊ธฐ๋ฅ์ด๋ค. ์ธ์ฆ, ๋ฐ์ดํฐ ์ ํจ์ฑ ๊ฒ์ฌ, ๋ก๊น ๋๋ ์ค๋ฅ ์ฒ๋ฆฌ์ ๊ฐ์ ์์ ์ ์ํํ ์ ์๋ค. ๋ฏธ๋ค์จ์ด ๊ธฐ๋ฅ์ ์ผ๋ฐ์ ์ผ๋ก ์์ฐจ์ ์ผ๋ก ์คํ๋๋ฏ๋ก ๊ฐ๋ฐ์๊ฐ ํน์ ์์๋ก ์คํ๋๋๋ก ์ฌ๋ฌ ๊ธฐ๋ฅ์ ๋ชจ๋ํํ๊ณ ์ฐ๊ฒฐํ ์ ์๋ค.
์ค์ฒฉ ๋ผ์ฐํ : ๋ผ์ฐํฐ๋ ์ค์ฒฉ ๋๋ ๊ณ์ธต์ ๋ผ์ฐํ ์ ์ง์ํ ์ ์์ผ๋ฏ๋ก ๊ฐ๋ฐ์๊ฐ ๊ฒฝ๋ก ๋ด์์ ๊ฒฝ๋ก๋ฅผ ์ ์ํ ์ ์๋ค. ์ด๋ ๋ค์ํ ๊ธฐ๋ฅ, ๋ชจ๋ ๋๋ ๊ตฌ์ฑ ์์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ๋ก๋ฅผ ๊ตฌ์ฑํ๊ณ ๊ตฌ์กฐํํ๋ ๋ฐ ๋์์ด ๋๋ค. ์ค์ฒฉ๋ ๋ผ์ฐํ ์ ํตํด ๋ ๋์ ์ฝ๋ ๊ตฌ์ฑ๊ณผ ๋ฌธ์ ๋ถ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.
ํ๋ ์์ํฌ ํตํฉ: ๋ผ์ฐํฐ๋ ์ผ๋ฐ์ ์ผ๋ก ์น ๊ฐ๋ฐ ํ๋ ์์ํฌ์์ URL ๋ผ์ฐํ ์ ์ฒ๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋๋ค. Node.js์ฉ Express.js, Python์ฉ Django ๋๋ Ruby on Rails์ ๊ฐ์ ํ๋ ์์ํฌ๋ ๊ฒฝ๋ก ์ ์ ๋ฐ ๊ด๋ฆฌ ํ๋ก์ธ์ค๋ฅผ ๋จ์ํํ๋ ๋ด์ฅ ๋ผ์ฐํฐ๋ฅผ ์ ๊ณตํ๋ค. ์ด๋ฌํ ํ๋ ์์ํฌ๋ ์ข ์ข ๊ฒฝ๋ก ๊ทธ๋ฃนํ, ๊ฒฝ๋ก ์ด๋ฆ ์ง์ ๋ฐ ๊ฒฝ๋ก ๋งค๊ฐ๋ณ์ ์ ํจ์ฑ ๊ฒ์ฌ์ ๊ฐ์ ์ถ๊ฐ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
์ ๋ฐ์ ์ผ๋ก ๋ผ์ฐํฐ๋ ๋ค์ด์ค๋ ์์ฒญ์ ์ ์๋ ๊ฒฝ๋ก๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ์ ํ ์ฝ๋ ํธ๋ค๋ฌ ๋๋ ์ปจํธ๋กค๋ฌ๋ก ๋ณด๋ด ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ค์ํ ์ญํ ์ ํ๋ค. ๋ค์ํ URL ๋ฐ HTTP ๋ฉ์๋๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ ๊ตฌ์กฐ์ ์ด๊ณ ์ ์ฐํ ๋ฐฉ๋ฒ์ ์ ๊ณตํ์ฌ ๊ฐ๋ฐ์๊ฐ ๋ณต์กํ๊ณ ์กฐ์งํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฝ๊ฒ ๊ตฌ์ถํ ์ ์๋๋ก ํ๋ค.
React Router
React Router๋ React ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ผ์ฐํ ์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๊ฐ๋ ฅํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค. ๊ฐ๋ฐ์๊ฐ ๋ค์ํ URL์ ํน์ ๊ตฌ์ฑ ์์ ๋๋ ๋ณด๊ธฐ์ ๋งคํํ์ฌ ๋์ ์ด๊ณ ํ์ ๊ฐ๋ฅํ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค ์ ์๋๋ก ํ๋ ๊ตฌ์ฑ ์์ ๋ฐ ์ ํธ๋ฆฌํฐ ์งํฉ์ ์ ๊ณตํ๋ค. React Router๋ ์๊ท๋ชจ ๋ฐ ๋๊ท๋ชจ React ํ๋ก์ ํธ ๋ชจ๋์์ ๋๋ฆฌ ์ฌ์ฉ๋๋ค.
๋ค์์ React Router์ ์ฃผ์ ๊ตฌ์ฑ ์์ ๋ฐ ๊ธฐ๋ฅ์ด๋ค.
BrowserRouter: ์ด ๊ตฌ์ฑ ์์๋ HTML5 ํ์คํ ๋ฆฌ API๋ฅผ ์ฌ์ฉํ์ฌ ๋ผ์ฐํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. URL์ ๋ณ๊ฒฝ ์ฌํญ์ ์์ ํ๊ณ ์ ์๋ ๊ฒฝ๋ก๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ์ ํ ๊ตฌ์ฑ ์์๋ฅผ ๋ ๋๋งํ๋ค. ์ผ๋ฐ์ ์ผ๋ก ์์ฉ ํ๋ก๊ทธ๋จ์ ์ต์์ ๊ตฌ์ฑ ์์๋ก ์ฌ์ฉ๋๋ค.
Route: ๊ฒฝ๋ก ๊ตฌ์ฑ ์์๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ด์์ ๊ฐ๋ณ ๊ฒฝ๋ก๋ฅผ ์ ์ํ๋ ๋ฐ ์ฌ์ฉ๋๋ค. ๊ฒฝ๋ก์ ํด๋น ๊ฒฝ๋ก๊ฐ ์ผ์นํ ๋ ๋ ๋๋งํ ๊ตฌ์ฑ ์์๋ฅผ ์ง์ ํ๋ค. ์๋ฅผ ๋ค์ด <
Route path="/home" element={<Home />} />
์ URL์ด "/home"๊ณผ ์ผ์นํ ๋ ํ ๊ตฌ์ฑ ์์๋ฅผ ๋ ๋๋งํ๋ค.Link ๋ฐ NavLink: ์ด๋ฌํ ๊ตฌ์ฑ ์์๋ฅผ ์ฌ์ฉํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๋ด์์ ์๋ก ๋ค๋ฅธ ๊ฒฝ๋ก ์ฌ์ด๋ฅผ ์ฝ๊ฒ ํ์ํ ์ ์๋ค. ๋งํฌ ๊ตฌ์ฑ ์์๋ ์ต์ปค ํ๊ทธ๋ฅผ ๋ ๋๋งํ๊ณ ํ์ด์ง๋ฅผ ์๋ก ๊ณ ์น์ง ์๊ณ URL ๋ณ๊ฒฝ์ ์ฒ๋ฆฌํ๋ค. NavLink ๊ตฌ์ฑ ์์๋ Link์ ์ ์ฌํ์ง๋ง ํ์ฌ ํ์ฑ ๊ฒฝ๋ก๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์คํ์ผ ๋๋ ํด๋์ค๋ฅผ ์ถ๊ฐํ ์ ์๋ค.
Routes: Routes ๊ตฌ์ฑ ์์๋ ์ฒซ ๋ฒ์งธ๋ก ์ผ์นํ๋ ๊ฒฝ๋ก๋ฅผ ๋ ์ ์ ์ผ๋ก ๋ ๋๋งํ๋ ๋ฐ ์ฌ์ฉ๋๋ค. ์ฌ๋ฌ ๊ฒฝ๋ก๋ฅผ ๋์์ ๋ ๋๋งํ๋ ๊ฒ์ ๋ฐฉ์งํ๋ ๋ฐ ๋์์ด ๋๋ค. ํ ๋ฒ์ ํ๋์ ๊ฒฝ๋ก๋ง ์ผ์นํ๊ณ ๋ ๋๋ง๋๋๋ก ํ๋ ค๋ฉด ๊ฒฝ๋ก๋ฅผ Routes ๊ตฌ์ฑ ์์๋ก ๋ํํด์ผ ํ๋ค.
Route Parameters: React Router๋ ๋์ ๊ฒฝ๋ก ๋งค๊ฐ๋ณ์(Dynamic Route Parameters)๋ฅผ ์ง์ํ๋ฏ๋ก ๊ฐ๋ฐ์๊ฐ ๊ฐ๋ณ ์ธ๊ทธ๋จผํธ๋ก URL ํจํด์ ์ ์ํ ์ ์๋ค. ๋งค๊ฐ๋ณ์๋ ๊ฒฝ๋ก ๊ฒฝ๋ก์์ ๋งค๊ฐ๋ณ์ ์ด๋ฆ ๋ค์ ์ฝ๋ก ์ ์ฌ์ฉํ์ฌ ํ์๋๋ค. ์๋ฅผ ๋ค์ด
<Route path="/users/:id" element={<User />} />
๋ "/users/123"๊ณผ ๊ฐ์ ๋ชจ๋ URL๊ณผ ์ผ์นํ๊ณ "123" ๊ฐ์ ์ฌ์ฉ์ ๊ตฌ์ฑ ์์์ ๋งค๊ฐ ๋ณ์๋ก ์ ๋ฌํ๋ค.์ค์ฒฉ ๋ผ์ฐํ (Nested Routing): React Router๋ ์๋ก์ ์ค์ฒฉ ๊ฒฝ๋ก๋ฅผ ํ์ฉํ์ฌ ๊ฐ๋ฐ์๊ฐ ๋ณต์กํ ๋ผ์ฐํ ๊ตฌ์กฐ๋ฅผ ๋ง๋ค ์ ์๋๋ก ํ๋ค. ์ค์ฒฉ ๊ฒฝ๋ก๋
<Route>
๊ตฌ์ฑ ์์๋ฅผ ๋ค๋ฅธ<Route>
๊ตฌ์ฑ ์์ ์์ ๋ฐฐ์นํ์ฌ ์ ์ํ ์ ์๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ค๋ฅธ ์น์ ๋๋ ๊ธฐ๋ฅ์ ๊ธฐ๋ฐ์ผ๋ก ๊ฒฝ๋ก๋ฅผ ์ฝ๊ฒ ๊ตฌ์ฑํ ์ ์๋ค.ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์ ํ์: React Router๋ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์ ํ์์ ํ์ฉํ๋ ํํฌ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. useNavigate ํํฌ๋ navigate('/') ๋๋ navigate(-1)์ ๊ฐ์ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ๊ฒฝ๋ก๋ฅผ ํ์ํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ก ๊ฐ์ฒด์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ๊ณตํ๋ค.
๋ฃจํธ ๊ฐ๋(Route Guards): React Router๋ ๋ฃจํธ ๊ฐ๋ ๋๋ ์ธ์ฆ ํ์ธ์ ๊ตฌํํ๊ธฐ ์ํ ๋ฉ์ปค๋์ฆ๋ ์ ๊ณตํ๋ค. ์์ ๊ตฌ์ฑ ์์ ๋๋ ์ฌ์ฉ์ ์ง์ ๊ตฌ์ฑ ์์๋ก ๊ฒฝ๋ก๋ฅผ ๋ํํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ ์ธ์ฆ ์ํ ๋๋ ๊ธฐํ ์กฐ๊ฑด์ ๋ฐ๋ผ ํน์ ๊ฒฝ๋ก์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ์ดํ ์ ์๋ค.
Browser Router
<BrowserRouter>
๋ ๋ธ๋ผ์ฐ์ ์ ์ฃผ์์ฐฝ์ ๊นจ๋ํ URL์ ์ฌ์ฉํ์ฌ ํ์ฌ ์์น๋ฅผ ์ ์ฅํ๊ณ ๋ธ๋ผ์ฐ์ ์ ๋ด์ฅ๋ ํ์คํ ๋ฆฌ ์คํ์ ์ฌ์ฉํ์ฌ ํ์ํ๋ค.
<BrowserRouter>
์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฌ ๋ฌธ์์ ๊ธฐ๋ณธ ๋ทฐ๋ฅผ ์ฌ์ฉํ์ง๋ง, ์๋ฅผ ๋ค์ด <iframe>
์์ ๋ค๋ฅธ ์ฐฝ์ URL์ ๋ํ ๋ณ๊ฒฝ ์ฌํญ์ ์ถ์ ํ๋ ๋ฐ ์ฌ์ฉํ ์๋ ์๋ค.
Route
๋ผ์ฐํธ๋ ์๋ง๋ React ๋ผ์ฐํฐ ์ฑ์์ ๊ฐ์ฅ ์ค์ํ ๋ถ๋ถ์ผ ๊ฒ์ด๋ค. URL ์ธ๊ทธ๋จผํธ์ ์ปดํฌ๋ํธ, ๋ฐ์ดํฐ ๋ก๋ฉ ๋ฐ ๋ฐ์ดํฐ ๋ณํ์ ์ฐ๊ฒฐํ๋ค. ๊ฒฝ๋ก ์ค์ฒฉ์ ํตํด ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์ ๋ ์ด์์๊ณผ ๋ฐ์ดํฐ ์ข ์์ฑ์ ๋จ์ํ๊ณ ์ ์ธ์ ์ผ๋ก ๋ง๋ค ์ ์๋ค.
Memory Router
MemoryRouter๋ React ์ ํ๋ฆฌ์ผ์ด์ ๋ด์์ ๋ฉ๋ชจ๋ฆฌ ๋ด ๋ผ์ฐํ ์ ๊ฐ๋ฅํ๊ฒ ํ๋ React Router์์ ์ ๊ณตํ๋ ๊ตฌ์ฑ ์์์ด๋ค. ๋ธ๋ผ์ฐ์ ์ URL ๋ฐ ๊ธฐ๋ก API๋ฅผ ํ์ฉํ๋ BrowserRouter ๋๋ HashRouter์ ๋ฌ๋ฆฌ MemoryRouter๋ ์ค์ ๋ธ๋ผ์ฐ์ URL์ ์ํฅ์ ์ฃผ์ง ์๊ณ ๋ผ์ฐํ ์ํ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๋ค.
๋ฉ๋ชจ๋ฆฌ ๋ด ๋ผ์ฐํ (In-Memory Routin): MemoryRouter๋ ์ฃผ๋ก ํ ์คํธ ๋๋ ๋ธ๋ผ์ฐ์ ์ URL์ ๋ณ๊ฒฝํ์ง ์๊ณ ๋ผ์ฐํ ์ํ๋ฅผ ๊ด๋ฆฌํ๋ ค๋ ์๋๋ฆฌ์ค์ ์ฌ์ฉ๋๋ค. URL์ด๋ ๋ธ๋ผ์ฐ์ ๊ธฐ๋ก์ด ์๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ผ์ฐํ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ค.
๋ธ๋ผ์ฐ์ ์ข ์์ฑ ์์(No Browser Dependency): MemoryRouter๋
<BrowserHistory>
๋ฐ<HashHistory>
์ ๋ฌ๋ฆฌ ๋ธ๋ผ์ฐ์ ์ ํ์คํ ๋ฆฌ ์คํ๊ณผ ๊ฐ์ ์ธ๋ถ ์์ค์ ๋ ๋ฆฝ์ ์ด๋ค. ์๋ฒ ์ธก ๋ ๋๋ง ๋๋ ํ ์คํธ ํ๋ ์์ํฌ์ ๊ฐ์ด ๋ธ๋ผ์ฐ์ ์ URL์ ์ง์ ์กฐ์ํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ๊ฑฐ๋ ๋ฐ๋์งํ์ง ์์ ํ๊ฒฝ์์ ์ฌ์ฉํ ์ ์๋ค.๋ผ์ฐํ ๊ตฌ์ฑ(Routing Configuration): ๋ค๋ฅธ ๋ผ์ฐํฐ ๊ตฌ์ฑ ์์์ ์ ์ฌํ๊ฒ MemoryRouter๋ฅผ ์ฌ์ฉํ๋ฉด
<Route>
๊ตฌ์ฑ ์์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒฝ๋ก๋ฅผ ๊ตฌ์ฑํ ์ ์๋ค. ์ํ๋ ๊ฒฝ๋ก์ ๊ตฌ์ฑ ์์๋ฅผ MemoryRouter ๊ตฌ์ฑ ์์์ ์์์ผ๋ก ์ ์ํ๋ค.๊ฒฝ๋ก ๋ ๋๋ง(Route Rendering): MemoryRouter๋ ์ ์๋ ๊ฒฝ๋ก๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ผ์นํ๋ ๊ฒฝ๋ก์ ๊ด๋ จ๋ ๊ตฌ์ฑ ์์๋ฅผ ๋ ๋๋งํ๋ค. ๊ฒฝ๋ก ๊ฒฝ๋ก๊ฐ ํ์ฌ URL(๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋ ๋๋ก)๊ณผ ์ผ์นํ๋ฉด ์ฐ๊ฒฐ๋ ๊ตฌ์ฑ ์์๊ฐ ๋ ๋๋ง๋๋ค. MemoryRouter๋ ๋ธ๋ผ์ฐ์ ์ URL์ด๋ ํ์ ๋์์ ๋ณ๊ฒฝํ์ง ์๋ค.
ํ์คํ ๋ฆฌ ๊ฐ์ฒด(History Object): MemoryRouter๋ BrowserRouter ๋๋ HashRouter์ ์ ์ฌํ ํ์คํ ๋ฆฌ ๊ฐ์ฒด๋ฅผ ์ ๊ณตํ๋ค. ๊ทธ๋ฌ๋ ์ด ๊ธฐ๋ก ๊ฐ์ฒด๋ ๋ฉ๋ชจ๋ฆฌ์ ์์ผ๋ฉฐ ๋ธ๋ผ์ฐ์ ์ ๊ธฐ๋ก์ ์ํฅ์ ์ฃผ์ง ์๋๋ค. ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก ํ์ํ๊ฑฐ๋ ๊ฒฝ๋ก ๋ณ๊ฒฝ ์ฌํญ์ ๋ฃ๊ฑฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ด์์ ๋ผ์ฐํ ์ํ๋ฅผ ์กฐ์ํ ์ ์๋ค.
์์น ๊ฐ์ฒด(Location Object): MemoryRouter๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ฉ๋ชจ๋ฆฌ ๋ด์์ ํ์ฌ URL์ ๋ํ๋ด๋ ์์น ๊ฐ์ฒด๋ฅผ ์ ์งํ๋ค. ์ฌ๊ธฐ์๋ ํ์ฌ ๊ฒฝ๋ก์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ๊ฒฝ๋ก ์ด๋ฆ, ๊ฒ์, ํด์ ๋ฐ ์ํ์ ๊ฐ์ ์์ฑ์ด ํฌํจ๋๋ค.
MemoryRouter๋ ๋ธ๋ผ์ฐ์ ์ URL์ ๋ณ๊ฒฝํ์ง ์๊ณ React ์ ํ๋ฆฌ์ผ์ด์ ๋ด์์ ๋ผ์ฐํ ์ ๊ด๋ฆฌํด์ผ ํ๋ ํ ์คํธ ๋ฐ ์๋๋ฆฌ์ค์ ์ ์ฉํ ๋๊ตฌ์ด๋ค. ๋ฉ๋ชจ๋ฆฌ ๋ด ๋ผ์ฐํ ์ ํ์ฉํ๊ณ ๋ค๋ฅธ ๋ผ์ฐํฐ ๊ตฌ์ฑ ์์์ ์ ์ฌํ API๋ฅผ ์ ๊ณตํ์ฌ ์๋ก ๋ค๋ฅธ ํ๊ฒฝ์์ ์๋ก ๋ค๋ฅธ ๋ผ์ฐํฐ ๊ตฌํ ๊ฐ์ ์ฝ๊ฒ ์ ํํ ์ ์๋ค.
Last updated