์ ํต์ ์ธ ์น์ฌ์ดํธ์ ํ๊ณ๐ฅ
ํ์ด์ง ์ด๋ ์ ๋งค๋ฒ ํ์ด์ง ์ ์ฒด๋ฅผ ๋ถ๋ฌ์๋ ์ ํต์ ์ธ ์น์ฌ์ดํธ
-> ์๊ฐ์ด ์ง๋๋ฉฐ ์ฌ์ฉ์์ ์๋น์ค ์ฌ์ด์ ์ํธ์์ฉ ์ฆ๊ฐ
-> ์ค๋ณต๋๋ ์์๋ฅผ ๋งค๋ฒ ๋ถ์ด์ ์๋ฒ์์ ๋ถํ์ํ ํธ๋ํฝ ์ฆ๊ฐ
-> ๋๋ฆฐ ๋ฐ์์ฑ์ผ๋ก ์ธํ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ํ
SPA์ ๋ฑ์ฅ๐ค
1990๋ ๋ ํ๋ฐ ์ ๋ฐ์ดํธ์ ํ์ํ ๋ฐ์ดํฐ๋ง ์๋ฒ์๊ฒ ์ ๋ฌ๋ฐ์ JavaScript๊ฐ ์ด ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ์ฌ HTML ์์๋ฅผ ์์ฑ, ํ๋ฉด์ ๋ณด์ฌ์ฃผ๋ ๋ฐฉ์์ด ๊ฐ๋ฐ ๋ฐ ์ฌ์ฉ๋๊ธฐ ์์ํ๋ฉฐ SPA๊ฐ ๋ฑ์ฅ
SPA๋ ๋ฌด์์ผ๊นโ
- ์๋ฒ๋ก๋ถํฐ ํ์ด์ง ๊ฐฑ์ ์ ํ์ํ ๋ฐ์ดํฐ๋ง ๋ฐ์ ๋ธ๋ผ์ฐ์ ์์ ํด๋นํ๋ ๋ถ๋ถ๋ง ์ ๋ฐ์ดํธํ๋ ๋ฐฉ์์ผ๋ก ์๋ํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ ์น ์ฌ์ดํธ
โ๏ธReact Router์ ํ์์ฑโ๏ธ
- ์ปดํฌ๋ํธ๋ ๋ฐ์ดํฐ๋ฅผ ์ปดํฌ๋ํธ๋ค๋ผ๋ฆฌ ๋ณด๋ค ์ ๊ธฐ์ ์ผ๋ก ์ฃผ๊ณ ๋ฐ์ ์ ์๋๋ก ์ค๊ณํด์ผ ํ๋๋ฐ ์ด๋ฅผ ๋์์ฃผ๋ ๊ฒ์ด
React Router
- React SPA์์๋ ๊ฒฝ๋ก์ ๋ฐ๋ผ ๋ค๋ฅธ ๋ทฐ๋ฅผ ๋ณด์ฌ์ฃผ๋๋ฐ ๋ผ์ฐํ (๋ค๋ฅธ ์ฃผ์์ ๋ฐ๋ผ ๋ค๋ฅธ ๋ทฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ณผ์ )์ ๋ฐ๋ผ ๋ค๋ฅธ ๋ทฐ๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด React์์๋
React Router
๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฃผ๋ก ์ฌ์ฉ
create-react-app
๊ณผ ๊ฐ์,,) ํ ๊ทธ ํ๊ฒฝ์ npm ๋ช
๋ น์ด๋ก React Router ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์นnpm install react-router-dom@์ค์นํ๊ณ ์ถ์ ๋ฒ์
import {BrowserRouter, Routes, Route, Link} from "react-router-dom"
- BrowserRouter
- ๋ผ์ฐํฐ ์ญํ
<BrowserRouter>
์ปดํฌ๋ํธ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ HTML5์ History API๋ฅผ ์ฌ์ฉํด ํ์ด์ง ์๋ก๊ณ ์นจ ์์ด ์ฃผ์ ๋ณ๊ฒฝ ๊ฐ๋ฅ<BrowserRouter>
๊ฐ ์์์ ์์ฑ๋์ด ์์ด์ผ React Router์ ์ปดํฌ๋ํธ ์ฌ์ฉ ๊ฐ๋ฅ- Routes, Route
- ๊ฒฝ๋ก๋ฅผ ๋งค์นญํด์ฃผ๋ ์ญํ
<Routes>
์ปดํฌ๋ํธ๋ ์ฌ๋ฌ<Route>
์ปดํฌ๋ํธ๋ฅผ ๊ฐ์ธ ๊ทธ ์ค ๊ฒฝ๋ก๊ฐ ์ผ์นํ๋ ๋จ ํ๋์ ๋ผ์ฐํฐ๋ง ๋ ๋๋ง<Route>
์ปดํฌ๋ํธ๋ path ์์ฑ์ ์ง์ , ํด๋น path์์ ๋ณด์ฌ์ค ์ปดํฌ๋ํธ ์ง์ - Link
- ๊ฒฝ๋ก๋ฅผ ์ฐ๊ฒฐํด์ฃผ๋ ์ญํ
<Link>
์ปดํฌ๋ํธ๋ ํ์ด์ง ์ ํ ๋ฐฉ์ง ๊ธฐ๋ฅ์ด ๋ด์ฅ๋์ด ์์ด SPA ๊ตฌํ ๊ฐ๋ฅ- ์ฐธ๊ณ :
<a>
์์๋ ํ์ด์ง ์ ํ ๊ณผ์ ์์ ํ์ด์ง๋ฅผ ๋ถ๋ฌ์ค๋ฏ๋ก ์๋ก๊ณ ์นจ ํ์ ๋ฐ์<Link>
์ to ์์ฑ์ ํ์ฉํ์ฌ<Route>
์ path ์ฃผ์๋ฅผ ์ฐ๊ฒฐ
<์ค๋์ ์ผ๊ธฐ>
์ด์ React๋ฅผ ์ฒ์ ๋ง์ฃผํ์ ๋ ๋๋ฌด ์ถฉ๊ฒฉ์ ๋ฐ์์ ๊ทธ๋ฐ์ง ์ค๋ ๊ณต๋ถ๋ ๋นํฉ์ค๋ฌ์๋ณด๋ค๋ ๋น๊ต์ ์ฆ๊ฒ๊ฒ ์ํ ์ ์์๋ ๊ฒ ๊ฐ๋ค. ์ฒ์์๋ ์ปดํฌ๋ํธ์ ์ค์์ฑ์ ๋ํ ๋ด์ ์ธ ์๊ตฌ์ฌ์ด ๋ค์๋๋ฐ ์ด๋ฒ์ React Twittler SPA ๊ณผ์ ๋ฅผ ์ํํ๋ฉฐ ๊นจ๋ซ๊ฒ ๋์๋ค. ๋ด๊ฐ ๋๋ ๊ฐ์ฅ ์ค์ํ ์ ์ ์ง๊ด์ ์ด๊ธฐ ๋๋ฌธ์ ํธ๋ฆฌํ๋ค๋ ๊ฒ์ด์๋ค. cssํ์ผ์ ๋ค๋ฃฐ ๋์๋ ์ปดํฌ๋ํธ๋ณ๋ก ๊ตฌ๋ถ์ง์ด ๋์ผ๋ฉด ์๊ฐ๋ ํจ์ฌ ๋จ์ถ๋๊ณ jsํ์ผ์ ์์ ํ ๋๋ ๋ณด๊ธฐ ํธํ๋ค๋ ์๊ฐ์ด ๋ค์๋ค. ๋๋ ์ด์ ๋ง react๋ฅผ ์ ํ๊ณ ์ดํดํ๋ ์์ค์ ๋จธ๋ฌด๋ฅด๊ณ ์๊ณ ์์ง ์ปดํฌ๋ํธ๋ฅผ ํจ์จ์ ์ผ๋ก ๋๋๋ ์์ ์ ์ด๋ ต๊ณ ์ทจ์ฝํ ๋ถ๋ถ์ธ๋ฐ ์ด ๋ถ๋ถ์ ์ ๋ฐ์ ์ํจ๋ค๋ฉด ๋์ค์๋ ํฐ ์ฅ์ ์ผ๋ก ํ์ฉํ ์๋ ์๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์๋ ์ ๋์ด์๋ค.