Unit5 ํšŒ๊ณ 

YEN Jยท2022๋…„ 9์›” 29์ผ
0

code states

๋ชฉ๋ก ๋ณด๊ธฐ
21/43

React SPA

๐Ÿ”† SPA ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ

์ „ํ†ต์ ์ธ ์›น์‚ฌ์ดํŠธ์˜ ํ•œ๊ณ„๐Ÿ˜ฅ

ํŽ˜์ด์ง€ ์ด๋™ ์‹œ ๋งค๋ฒˆ ํŽ˜์ด์ง€ ์ „์ฒด๋ฅผ ๋ถˆ๋Ÿฌ์™”๋˜ ์ „ํ†ต์ ์ธ ์›น์‚ฌ์ดํŠธ
-> ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉฐ ์‚ฌ์šฉ์ž์™€ ์„œ๋น„์Šค ์‚ฌ์ด์˜ ์ƒํ˜ธ์ž‘์šฉ ์ฆ๊ฐ€
-> ์ค‘๋ณต๋˜๋Š” ์š”์†Œ๋ฅผ ๋งค๋ฒˆ ๋ถˆ์–ด์™€ ์„œ๋ฒ„์™€์˜ ๋ถˆํ•„์š”ํ•œ ํŠธ๋ž˜ํ”ฝ ์ฆ๊ฐ€
-> ๋Š๋ฆฐ ๋ฐ˜์‘์„ฑ์œผ๋กœ ์ธํ•œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์˜ ์ €ํ•˜

SPA์˜ ๋“ฑ์žฅ๐Ÿค“

1990๋…„๋Œ€ ํ›„๋ฐ˜ ์—…๋ฐ์ดํŠธ์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ์„œ๋ฒ„์—๊ฒŒ ์ „๋‹ฌ๋ฐ›์•„ JavaScript๊ฐ€ ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜์—ฌ HTML ์š”์†Œ๋ฅผ ์ƒ์„ฑ, ํ™”๋ฉด์— ๋ณด์—ฌ์ฃผ๋Š” ๋ฐฉ์‹์ด ๊ฐœ๋ฐœ ๋ฐ ์‚ฌ์šฉ๋˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉฐ SPA๊ฐ€ ๋“ฑ์žฅ

๐Ÿ”† SPA

SPA๋ž€ ๋ฌด์—‡์ผ๊นŒโ“

  • ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ํŽ˜์ด์ง€ ๊ฐฑ์‹ ์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ๋ฐ›์•„ ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ•ด๋‹นํ•˜๋Š” ๋ถ€๋ถ„๋งŒ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‚˜ ์›น ์‚ฌ์ดํŠธ
  • SPA์˜ ์žฅ์ 
    • ์‚ฌ์šฉ์ž์™€์˜ interaction์— ๋น ๋ฅด๊ฒŒ ๋ฐ˜์‘
    • ์„œ๋ฒ„ ๊ณผ๋ถ€ํ™” ๋ฌธ์ œ ๊ฐ์†Œ
    • ๋” ๋‚˜์€ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ์ œ๊ณต
  • SPA์˜ ๋‹จ์ 
    • ํฐ JavaScript ํŒŒ์ผ ํฌ๊ธฐ -> ์ฒซ ํ™”๋ฉด ๋กœ๋”ฉ ์‹œ๊ฐ„ ์ฆ๊ฐ€
    • ์ข‹์ง€ ์•Š์€ ๊ฒ€์ƒ‰ ์—”์ง„ ์ตœ์ ํ™” -> ์ด์— ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ฒ€์ƒ‰ ์—”์ง„์ด ๋ฐœ์ „ํ•˜๋Š” ์ถ”์„ธ

React Router

โ—๏ธReact Router์˜ ํ•„์š”์„ฑโ—๏ธ

  • ์ปดํฌ๋„ŒํŠธ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ปดํฌ๋„ŒํŠธ๋“ค๋ผ๋ฆฌ ๋ณด๋‹ค ์œ ๊ธฐ์ ์œผ๋กœ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„ํ•ด์•ผ ํ•˜๋Š”๋ฐ ์ด๋ฅผ ๋„์™€์ฃผ๋Š” ๊ฒƒ์ด React Router
  • React SPA์—์„œ๋Š” ๊ฒฝ๋กœ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๋ทฐ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š”๋ฐ ๋ผ์šฐํŒ…(๋‹ค๋ฅธ ์ฃผ์†Œ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๋ทฐ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๊ณผ์ •)์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๋ทฐ๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด React์—์„œ๋Š” React Router๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฃผ๋กœ ์‚ฌ์šฉ

๐Ÿ”† React Router ํ™œ์šฉ

React Router ์‚ฌ์šฉ ํ™˜๊ฒฝ ์„ธํŒ… ๐Ÿฅธ

  • React ํ”„๋กœ์ ํŠธ ํ™˜๊ฒฝ ์„ค์ •(create-react-app๊ณผ ๊ฐ™์€,,) ํ›„ ๊ทธ ํ™˜๊ฒฝ์— npm ๋ช…๋ น์–ด๋กœ React Router ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜
    • ํ˜•์‹: npm install react-router-dom@์„ค์น˜ํ•˜๊ณ  ์‹ถ์€ ๋ฒ„์ „
  • ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊บผ๋‚ด์˜ค๊ธฐ ์œ„ํ•œ import ๊ตฌ๋ฌธ ์ž‘์„ฑ
    • ํ˜•์‹: import {BrowserRouter, Routes, Route, Link} from "react-router-dom"

React์˜ ์ฃผ์š” ์ปดํฌ๋„ŒํŠธ ๐Ÿง

  • BrowserRouter
    • ๋ผ์šฐํ„ฐ ์—ญํ• 
      • <BrowserRouter> ์ปดํฌ๋„ŒํŠธ๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ HTML5์˜ History API๋ฅผ ์‚ฌ์šฉํ•ด ํŽ˜์ด์ง€ ์ƒˆ๋กœ๊ณ ์นจ ์—†์ด ์ฃผ์†Œ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ
      • <BrowserRouter>๊ฐ€ ์ƒ์œ„์— ์ž‘์„ฑ๋˜์–ด ์žˆ์–ด์•ผ React Router์˜ ์ปดํฌ๋„ŒํŠธ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • Routes, Route
    • ๊ฒฝ๋กœ๋ฅผ ๋งค์นญํ•ด์ฃผ๋Š” ์—ญํ• 
      • <Routes> ์ปดํฌ๋„ŒํŠธ๋Š” ์—ฌ๋Ÿฌ <Route> ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ฐ์‹ธ ๊ทธ ์ค‘ ๊ฒฝ๋กœ๊ฐ€ ์ผ์น˜ํ•˜๋Š” ๋‹จ ํ•˜๋‚˜์˜ ๋ผ์šฐํ„ฐ๋งŒ ๋ Œ๋”๋ง
      • <Route> ์ปดํฌ๋„ŒํŠธ๋Š” path ์†์„ฑ์„ ์ง€์ •, ํ•ด๋‹น path์—์„œ ๋ณด์—ฌ์ค„ ์ปดํฌ๋„ŒํŠธ ์ง€์ •
  • Link
    • ๊ฒฝ๋กœ๋ฅผ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ์—ญํ• 
      • <Link> ์ปดํฌ๋„ŒํŠธ๋Š” ํŽ˜์ด์ง€ ์ „ํ™˜ ๋ฐฉ์ง€ ๊ธฐ๋Šฅ์ด ๋‚ด์žฅ๋˜์–ด ์žˆ์–ด SPA ๊ตฌํ˜„ ๊ฐ€๋Šฅ
      • ์ฐธ๊ณ : <a> ์š”์†Œ๋Š” ํŽ˜์ด์ง€ ์ „ํ™˜ ๊ณผ์ •์—์„œ ํŽ˜์ด์ง€๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋ฏ€๋กœ ์ƒˆ๋กœ๊ณ ์นจ ํ˜„์ƒ ๋ฐœ์ƒ
      • <Link>์˜ to ์†์„ฑ์„ ํ™œ์šฉํ•˜์—ฌ <Route>์˜ path ์ฃผ์†Œ๋ฅผ ์—ฐ๊ฒฐ

React Twittler SPA

css๋ฅผ ์ž…ํžŒ React Twittler SPA๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป

<์˜ค๋Š˜์˜ ์ผ๊ธฐ>
์–ด์ œ React๋ฅผ ์ฒ˜์Œ ๋งˆ์ฃผํ–ˆ์„ ๋•Œ ๋„ˆ๋ฌด ์ถฉ๊ฒฉ์„ ๋ฐ›์•„์„œ ๊ทธ๋Ÿฐ์ง€ ์˜ค๋Š˜ ๊ณต๋ถ€๋Š” ๋‹นํ™ฉ์Šค๋Ÿฌ์›€๋ณด๋‹ค๋Š” ๋น„๊ต์  ์ฆ๊ฒ๊ฒŒ ์ž„ํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ์ฒ˜์Œ์—๋Š” ์ปดํฌ๋„ŒํŠธ์˜ ์ค‘์š”์„ฑ์— ๋Œ€ํ•œ ๋‚ด์ ์ธ ์˜๊ตฌ์‹ฌ์ด ๋“ค์—ˆ๋Š”๋ฐ ์ด๋ฒˆ์— React Twittler SPA ๊ณผ์ œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉฐ ๊นจ๋‹ซ๊ฒŒ ๋˜์—ˆ๋‹ค. ๋‚ด๊ฐ€ ๋Š๋‚€ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ ์€ ์ง๊ด€์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ํŽธ๋ฆฌํ•˜๋‹ค๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. cssํŒŒ์ผ์„ ๋‹ค๋ฃฐ ๋•Œ์—๋„ ์ปดํฌ๋„ŒํŠธ๋ณ„๋กœ ๊ตฌ๋ถ„์ง€์–ด ๋†“์œผ๋ฉด ์‹œ๊ฐ„๋„ ํ›จ์”ฌ ๋‹จ์ถ•๋˜๊ณ  jsํŒŒ์ผ์„ ์ˆ˜์ •ํ•  ๋•Œ๋„ ๋ณด๊ธฐ ํŽธํ•˜๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ๋‚˜๋Š” ์ด์ œ ๋ง‰ react๋ฅผ ์ ‘ํ•˜๊ณ  ์ดํ•ดํ•˜๋Š” ์ˆ˜์ค€์— ๋จธ๋ฌด๋ฅด๊ณ  ์žˆ๊ณ  ์•„์ง ์ปดํฌ๋„ŒํŠธ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๋‚˜๋ˆ„๋Š” ์ž‘์—…์€ ์–ด๋ ต๊ณ  ์ทจ์•ฝํ•œ ๋ถ€๋ถ„์ธ๋ฐ ์ด ๋ถ€๋ถ„์„ ์ž˜ ๋ฐœ์ „์‹œํ‚จ๋‹ค๋ฉด ๋‚˜์ค‘์—๋Š” ํฐ ์žฅ์ ์œผ๋กœ ํ™œ์šฉํ•  ์ˆ˜๋„ ์žˆ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋˜ ์œ ๋‹›์ด์—ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€