[React.js] router


router ๋ž€

๋ผ์šฐํŒ… - ์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „

SPA(Single Page Application) ์‹ฑ๊ธ€ํŽ˜์ด์ง€๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ์ด์œ ๋Š” ์œ ์ €๊ฐ€ ์ฒ˜์Œ ์ ‘์†ํ–ˆ์„๋•Œ ๊ตฌ์ฒด์ ์ธ data๋ฅผ ์ œ์™ธํ•œ ์ •์ ํŒŒ์ผ์„ ๋ชจ๋‘ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ๋•Œ๋ฌธ

๋ฆฌ์•กํŠธ ๋ผ์šฐํ„ฐ๋กœ ํŽ˜์ด์ง€๋ฅผ ๋‚˜๋ˆ„์–ด ์œ ์ €๊ฐ€ ์ ‘์†ํ•˜๋Š” url๋งˆ๋‹ค ๋‹ค๋ฅธ data๋ฅผ ๋ณด์—ฌ์ค„ ์ˆ˜ ํ• ์ˆ˜ ์žˆ์Œ

ํŽ˜์ด์ง€์˜ ๋กœ๋”ฉ ์—†์ด, ํŽ˜์ด์ง€์— ํ•„์š”ํ•œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ถˆ๋Ÿฌ์™€ ๋ Œ๋”๋ง ํ•˜์—ฌ ๋ณด์—ฌ์ฃผ๋„๋ก ๋„์™€์คŒ

์ƒˆ๋กœ์šด ํŽ˜์ด์ง€๋ฅผ ๋กœ๋“œํ•˜์ง€ ์•Š๊ณ  ํ•˜๋‚˜์˜ ํŽ˜์ด์ง€ ์•ˆ์—์„œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ๊ฐ€์ ธ์˜ค๋Š” ํ˜•ํƒœ

CSR(Client Side Rendering)

์ตœ์ดˆ ํ•œ ๋ฒˆ HTML, static, js ๋“ฑ์„ ๋‹ค ๋ฐ›์•„์™€์„œ ๋กœ๋”ฉํ•˜๋Š” ๋ฐฉ์‹

์ดํ›„์—๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์ด ์žˆ์„ ๋•Œ๋งˆ๋‹ค ๋ฆฌ์†Œ์Šค๋ฅผ ์„œ๋ฒ„์—์„œ ์ œ๊ณตํ•˜๊ณ  ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ•ด์„ ํ›„ ๋ Œ๋”๋ง

ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ=> ๋ณ€ํ™”๊ฐ€ ํ•„์š”ํ•œ ์˜์—ญ๋งŒ ์„œ๋ฒ„์— ์ „๋‹ฌ=> ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ๋กœ ๋ฆฌ์†Œ์Šค ์ „๋‹ฌ=> ํด๋ผ์ด์–ธํŠธ์—์„œ view ์ฒ˜๋ฆฌ

SPA(Single Page App) ํ˜•์‹์˜ ํ”„๋ก ํŠธ์—”๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(React, Vue)์˜ ๋ฐฉ์‹

(React SSR ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ=Next.js, Vue SSR ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ=Nuxt.js)

์ฒ˜์Œ์— HTML์— ๋Œ€ํ•œ ์ •๋ณด ๋น„์–ด ์žˆ์Œ

yarn add react-router-dom

๊ณผ๊ฑฐ์˜ ๋ฒ„์ „์„ ์“ฐ๊ณ  ์‹ถ๋‹ค๊ณ  ํ•˜๋ฉด

package.json ์—ด๊ธฐ

โ€œreact-router-domโ€: โ€œ5โ€,

์ˆ˜์ •ํ›„

ํ„ฐ๋ฏธ๋„์—์„œ yarn

yarn yarn

===============

ํ˜„์žฌ 6 ๋ฒ„์ „์œผ๋กœ ๋ฐ”๋€œ

https://reactrouter.com/

**[Declarative routing for React apps at any scaleReact Router**

Version 6 of React Router is here! React Router v6 takes the best features from v3, v5, and its sister project, Reach Router, in our smallest and most powerful package yet. reactrouter.com](https://reactrouter.com/)

https://reactrouter.com/docs/en/v6/upgrading/v5

importย {ย BrowserRouterย ,ย Routes,ย Route,ย Linkย }ย fromย "react-router-dom";

<Route path="์ฃผ์†Œ"ย element={ <๋ณด์—ฌ์ฃผ๊ณ ์‹ถ์€ ์ปดํฌ๋„ŒํŠธ />ย }>

Switch => Routes๋กœ

Route : ์–ด๋–ค๊ฒฝ๋กœ๋กœ ๋“ค์–ด์™”์„๋•Œ ์–ด๋–ค ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ณด์—ฌ์ฃผ๊ฒ ๋‹ค.. ( ์ปดํฌ๋„ŒํŠธ ๋ณด์ด๋Š” ์˜์—ญ)

<Routes>
  <Route path="/aaa" element={<Aaa />} />

  <Route path="/bbb" element={<Bbb />} />
</Routes>

Link : Router์˜ ์ฃผ์†Œ๋ฅผ ๋ฐ”๊ฟˆ a ํƒœ๊ทธ์ง€๋งŒ ์ƒˆ๋กœ๊ณ ์นจ ์•ˆ๋จ

<Link to="/">ํ™ˆ</Link>

<Link to="/path์ฃผ์†Œ">์†Œ๊ฐœ</Link>

<Link to="/about">์†Œ๊ฐœ</Link>

useHistory ์‚ฌ๋ผ์ง - useNavigate ํ•จ์ˆ˜

history.push(โ€˜/โ€™) -> navigate(โ€˜/โ€™)