todolist side project ์งํ์ ํ๊ณ ์๋๋ฐ, ์ฒ์ ์์ํ ๋ ํ๋ก์ ํธ ๊ตฌ์กฐ๋ฅผ ์๊ฐํ๋ ๊ฒ์ด ์ด๋ ต๊ณ , ์ด๋ค component๋ก ๊ตฌ์ฑํ ์ง๊ฐ ์ด๋ ค์ด ๊ฒ ๊ฐ์ต๋๋ค.
์ฌ๋ฌ ํ๋ฉด์ด ๊ตฌ์ฑ๋ ์น ์ดํ๋ฆฌ์ผ์ด์
์ ๋ง๋ ๋ค๋ฉด ํ์์ ์ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ฉฐ, React-native์๋ ์ฌ์ฉ ๊ฐ๋ฅ
์ฌ์ฉ์๊ฐ ์ํ๋ ํ์ด์ง๋ก ์ด๋์ ์ํ๊ฒ ๋๋๋ฐ, ํด๋น ํ์ด์ง๋ก ์ด๋์ ๊ฐ๋ฅ์ผํ๋ ๊ฒ์ด Router์ ์ญํ
๋ผ์ฐํ : ๋ค๋ฅธ ์ฃผ์์ ๋ฐ๋ผ ๋ค๋ฅธ ๋ทฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ฒ
SPA : Single Page Application - ํ์ด์ง๊ฐ 1๊ฐ์ธ ์ดํ๋ฆฌ์ผ์ด์
๐งฑ Hash Router
ํด๋ผ์ด์ธํธ๋ฅผ ์ํด ์ค๊ณ๋ ๋ผ์ฐํฐ. Hash(#)๋ ์ต์ปค๋งํฌ๋ฅผ ์ ์ํ ๋ ์ฌ์ฉ. ์ฃผ์์ฐฝ์ ํ์ฌ ํ์ด์ง ๊ฒฝ๋ก ๋ค์ # ์๋ณ์๋ฅผ ์ ๋ ฅํ๋ฉด ๋ธ๋ผ์ฐ์ ๋ ์๋ฒ ์์ฒญ์ ๋ณด๋ด์ง ์๊ณ , ํ์ฌ ํ์ด์ง์์ ์๋ณ์์ ํด๋นํ๋ id attribute๊ฐ ์๋ element๋ฅผ ์ฐพ์์ ๊ทธ element์ ์์น๋ฅผ ํ๋ฉด์ ๋ณด์ฌ์ค๋ค.
๋ชจ๋ ๊ฒฝ๋ก ์์ #๋ฅผ ๋ถ์ฌ์ผ ํ๋ค
๋ฐฑ์๋๊ฐ ํ์ ์๋ ์์ ํด๋ผ์ด์ธํธ ์ฌ์ดํธ๋ฅผ ๋ง๋ค ๋ ์ ์ฉํ ๋๊ตฌ
import React from "react";
import {
HashRouter as Router,
Route,
Redirect,
Switch
} from "react-router-dom";
import CurrentList from "../Page/CurrentList";
import PastList from "../Page/PastList";
export default () => (
<Router>
<Switch>
<Route path="/" exact component={CurrentList} />
<Route path="/pastlist" exact component={PastList} />
<Redirect from="*" to="/" />
</Switch>
</Router>
);
// exact๋ฅผ ์ฌ์ฉํ๋ ์ด์ -> ์ฃผ์ด์ง ์ฃผ์์ ๊ฐ์์ผ render๊ฐ ์งํ
๐งฑ BrowserRouter
์ค์ Browser ์ฃผ์์ ๊ฐ์ ํํ๋ฅผ ๋ณด์ฌ์ค๋ค. ์ฑ์ router๋ก ๊ฐ์ธ๋ฉด router๊ฐ history api ์ ์ ๊ทผํ ์ ์๊ณ , Route๋ฅผ ์ฌ์ฉํ ๋ match, history, location ๋ฑ์ props๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
๐งฑ Switch
์ค์์น๋ ๋ผ์ฐํฐ๋ค์ ๋ฌถ์ ๋ค์, ๊ฐ์ฅ ๋จผ์ path์ ๋งค์น๋๋ Route์ ์ฐ๊ฒฐ
๐งฑ Redirect
Redirect์ ๊ฒฝ์ฐ์๋ ํด๋น๋์ง ์์ ์ฃผ์๊ฐ ์ ๋ ฅ์ ์ ํ ์ฃผ์๋ก ํ์ด์ง๋ฅผ ๋ณด๋ด์ฃผ๋ ๊ฒ์ด๋ค. ์ฌ๊ธฐ์์ redirect๋ push๊ฐ ์๋ replace๋ฐฉ์์ด๋ผ history์ ๋จ์ง ์๋๋ค. location ๊ฐ์ฒด๋ฅผ ํตํด์๋ redirect๊ฐ ๊ฐ๋ฅ
< React-Router https://reacttraining.com/react-router/web/guides/quick-start >