React Intro

Yeongยท2023๋…„ 1์›” 20์ผ
0

React

๋ชฉ๋ก ๋ณด๊ธฐ
14/16

๐Ÿ“–React

๐Ÿท๏ธ๋ฆฌ์•กํŠธ ํŠน์ง• ๋ฐ ์žฅ์ 

๋ฆฌ์•กํŠธ๋Š ui์— ์ง‘์ค‘ํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค
๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋ฏ€๋กœ ์ถ”๊ฐ€์ ์œผ๋กœ ํ•„์š”ํ•œ ๋ชจ๋“ˆ ์„ค์น˜ํ•ด์•ผํ•œ๋‹ค.

  • ํ”„๋ ˆ์ž„์›Œํฌ๋Š”

  • ์žฅ์ 
    ui๋ฅผ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.(querySelector๋กœ ํ•˜๋‚˜ํ•˜๋‚˜ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค์ง€ ์•Š์•„๋„๋จ)
    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฌธ๋ฒ•์„ ๊ทธ๋ž˜๋„ ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋”ฐ๋กœ ๊ณต๋ถ€ํ•  ๋ฌธ๋ฒ•๋“ค์ด ์ ๋‹ค.
    ๋งŽ์€ ์‚ฌ์šฉ์ž๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฐธ๊ณ ํ•  ๋ ˆํผ๋Ÿฐ์Šค๋“ค์ด ๋งŽ๋‹ค.
    ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐœ๋ฐœํ• ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์žฌ์‚ฌ์šฉ์ด ์šฉ์ดํ•˜๊ฒŒ ์ฝ”๋“œ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋‹ค.
    ๋ฆฌ์•ก๋“œ๋ฅผ ๋ฐฐ์šฐ๋ฉด React Native๋ฅผํ†ตํ•ด ๋ชจ๋ฐ”์ผ ๊ฐœ๋ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿท๏ธJSX

jSX๋ž€?

jSX(JavaScript XML)์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ™•์žฅํ•œ ๋ฌธ๋ฒ•์œผ๋กœ jSX๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ React ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

jSX๊ฐ€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ™•์žฅํ•œ ๋ฌธ๋ฒ•์ด๋ผ๊ณ ํ•ด๋„ ๋ธŒ๋ผ์šฐ์ €๋Š” jSX๋ฅผ ํ•ด์„ํ•˜์ง€ ๋ชปํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ 'Babel'์ด jSX๋ฅผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๋ณ€ํ™˜ํ•ด์ค€๋‹ค.

jSX ๊ทœ์น™

  • ํ•˜๋‚˜์˜ ์—˜๋ฆฌ๋จผํŠธ ์•ˆ์— ๋ชจ๋“  ์—˜๋ฆฌ๋จผํŠธ๊ฐ€ ํฌํ•จ๋˜์–ด์•ผํ•œ๋‹ค.
  • React์—์„œ CSS class ์†์„ฑ์„ ์ง€์ •ํ•˜๋ ค๋ฉด "className"์œผ๋กœ ํ‘œ๊ธฐํ•ด์•ผ ํ•œ๋‹ค.
  • JavaScript๋ฅผ ์“ฐ๊ณ ์ž ํ•œ๋‹ค๋ฉด, ๊ผญ ์ค‘๊ด„ํ˜ธ{}๋ฅผ ์ด์šฉํ•œ๋‹ค.
  • JSX๋กœ React ์—˜๋ฆฌ๋จผํŠธ ์ž‘์„ฑ ์‹œ์—๋Š” ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•œ๋‹ค.
  • ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง์€ if๋ฌธ์ด ์•„๋‹Œ ์‚ผํ•ญ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•ด์•ผํ•œ๋‹ค.
    • ์‚ผํ•œ์—ฐ์‚ฐ์ž๋Š” ํ‘œํ˜„์‹(๊ฐ’์œผ๋กœ ํ™˜์‚ฐ ๊ฐ€๋Šฅ)์œผ๋ฏ€๋กœ ๋ณ€์ˆ˜๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  • ์—ฌ๋Ÿฌ ๊ฐœ์˜ HTML ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ํ‘œ์‹œํ•  ๋•Œ๋Š” map()ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, map()ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๋ฐ˜๋“œ์‹œ key JSX ์†์„ฑ์„ ๋„ฃ์–ด์•ผ ํ•œ๋‹ค.(filter ์‚ฌ์šฉ ํ›„์— map ์“ฐ๋Š” ๋“ฑ ํ™œ์šฉ ๊ฐ€๋Šฅ)
    • ํ‚ค๋Š” ๊ณ ์œ ํ•œ ๊ฐ’์„ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š”๋ฐ ๋งŒ์•ฝ ์ธ๋ฑ์Šค ์‚ฌ์šฉํ•˜๋ฉด ์ค‘๊ฐ„์— ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ํ›„ ๋‹ค์‹œ ๊ฐ€์ ธ์˜ค๊ฒŒ๋˜๋ฉด ์ธ๋ฑ์Šค๊ฐ€ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ธ๋ฑ์Šค ์‚ฌ์šฉ์€ ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
      (UUID, NanoID ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์„ ์ด์šฉํ•ด ํ‚ค ๊ฐ’์„ ์ค„์ˆ˜ ์žˆ์Œ)

๐Ÿท๏ธComponent

์ปดํฌ๋„ŒํŠธ๋ž€ ํ•˜๋‚˜์˜ ๊ธฐ๋Šฅ ๊ตฌํ˜•์„ ์œ„ํ•œ ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ์ฝ”๋“œ ๋ฌถ์Œ์ด๋‹ค. ์ปดํฌ๋„ŒํŠธ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ๋งŒ๋“ค๊ณ  ์กฐํ•ฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

๋ชจ๋“  ๋ฆฌ์•กํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ตœ์†Œ ํ•œ ๊ฐœ์˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ์ด ์ปดํฌ๋„ŒํŠธ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด๋ถ€์ ์œผ๋กœ๋Š” ๊ทผ์›(root)์ด ๋˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ์ด ์ตœ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ๋Š” ๊ทผ์›์˜ ์—ญํ• ์„ ํ•˜๋ฏ€๋กœ ๋‹ค๋ฅธ ์ž์‹ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ํŠธ๋ฆฌ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ ์žˆ๋‹ค.

๐Ÿท๏ธCreate React App

Create React App์€ ๋ฆฌ์•กํŠธ SPA๋ฅผ ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์–ด์ง„ ํˆด ์ฒด์ธ์ด๋‹ค.
npx create-react-app@latest ํด๋”์ด๋ฆ„์œผ๋กœ ์„ค์น˜ ๊ฐ€๋Šฅ
npm start๋กœ ํŽ˜์ด์ง€ ์—ด์ˆ˜ ์žˆ์Œ

profile
๊ธ์ •์ ์œผ๋กœ~โœ๏ธ(โ—”โ—กโ—”)

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