React intro

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

React

๋ชฉ๋ก ๋ณด๊ธฐ
1/10
post-thumbnail
post-custom-banner

๐Ÿ—“๏ธ ์˜ค๋Š˜ ๋ฐฐ์šด ๋‚ด์šฉ

  1. React intro ๊ฐœ์š”
  2. jsx
  3. Create React App
  4. React Twitter Intro

๐ŸŒ–React

React๋Š” ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ Javascript ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‹ค.
React๋Š” ํŽ˜์ด์Šค๋ถ์— ์˜ํ•ด ๋งŒ๋“ค์–ด์ง„ ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ์ด๋‹ค.
React๋Š” ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์œผ๋กœ HTML๋กœ ๊ตฌ์„ฑ๋œ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

โžก๏ธ Why React?

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

๐Ÿ”ด์„ ์–ธํ˜•

์ฝ”๋“œ๋ฅผ ์ž์„ธํžˆ ๋ณด์ง€ ์•Š์•„๋„ ์ง๊ด€์ ์œผ๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์–ธ์–ด
JSX(JavaScript XmL)๋ฅผ ํ™œ์šฉํ•œ ์„ ์–ธํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ

๐ŸŸ ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜

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

###๐ŸŸข ๋ฒ”์šฉ์„ฑ

๋ฆฌ์•กํŠธ๋Š” ๊ธฐ์กด ํ”„๋กœ์ ํŠธ์—๋„ ์œ ์šฉํ•˜๊ฒŒ ์ ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๋˜ Facebook์—์„œ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฒ„๊ทธ๊ฐ€ ์ ๊ณ  ์•ˆ์ •์ ์ด๋‹ค.


๐ŸŒ– JSX(JavaScript XmL)

JSX๋Š” Javascript๊ฐ€ ํ™•์žฅ๋œ ๋ฌธ๋ฒ•์ด๋‹ค. ํ•˜์ง€๋งŒ, JSX๋Š” ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋ฐ”๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” Javascript๊ฐ€ ์•„๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” Javascript๋กœ ๋ณ€ํ™˜ํ•ด์•ผ ํ•˜๋Š”๋ฐ ์ด ๋•Œ ํ•„์š”ํ•œ ๊ฒƒ์ด Babel์ด๋‹ค. Babel์€ JSX๋ฅผ Javascript๋กœ ์ปดํŒŒ์ผํ•œ๋‹ค.

๐ŸŒŽ JSX ์ฃผ์š”๊ทœ์น™

  • ์—ฌ๋Ÿฌ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒฝ์šฐ : ์ตœ์ƒ์œ„์—์„œ opening tag์™€ closing tag๋กœ ๊ฐ์‹ธ์•ผ ํ•œ๋‹ค.
  • css class ์†์„ฑ์„ ์ง€์ •ํ•  ๋•Œ : className์œผ๋กœ ํ‘œ๊ธฐํ•œ๋‹ค. ๊ทธ๋ƒฅ class๋งŒ ์“ฐ๋ฉด js์˜ class๋กœ ์ธ์‹ํ•œ๋‹ค.
  • JSX์—์„œ JS'ํ‘œํ˜„์‹'์„ ์“ฐ๋ ค๋ฉด ์ค‘๊ด„ํ˜ธ{}์•ˆ์— ์จ์ค˜์•ผํ•œ๋‹ค. {}๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์ผ๋ฐ˜ ํ…์ŠคํŠธ๋กœ ์ธ์‹ํ•œ๋‹ค.
    ํ‘œํ˜„์‹๊ณผ ๋ช…๋ น๋ฌธ์ด ๋ฌด์—‡์ธ์ง€ ๋ชฐ๋ผ์„œ ์ฐพ์•„๋ณด์•˜๋‹ค.
    ์ด ๋ธ”๋กœ๊ทธ์— ์„ค๋ช…์ด ๋‚˜์™€์žˆ์–ด์„œ ์ดํ•ดํ•˜๊ธฐ ํŽธํ–ˆ๋‹ค.
  • React์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์ •์˜ํ•  ๊ฒฝ์šฐ, ๊ทธ ์—˜๋ฆฌ๋จผํŠธ๋Š” ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•ด์•ผํ•œ๋‹ค. ์ด๋Ÿฐ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ํ†ตํ•ด ์ž‘์„ฑ๋œ JSX์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉ์ž ์ •์˜ ์ปดํฌ๋„ŒํŠธ๋ผ๊ณ  ํ•œ๋‹ค.
  • ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง์€ if๋ฌธ ๋Œ€์‹  '์‚ผํ•ญ์—ฐ์‚ฐ์ž'๋ฅผ ์จ์•ผํ•œ๋‹ค.
  • ์—ฌ๋Ÿฌ๊ฐœ์˜ html ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ํ‘œ์‹œํ•  ๋•Œ์—๋Š” mapํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•˜๋ฉฐ, ์ด๋•Œ ๋ฐ˜๋“œ์‹œ key jsx์†์„ฑ์„ ๋„ฃ์–ด์•ผํ•œ๋‹ค. key์—๋Š” ์ฃผ๋กœ id๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • ์ตœ์ƒ์œ„์—์„œ opening tag, closing tag ๋กœ ๊ฐ์‹ธ์ฃผ์–ด์•ผ ํ•œ๋‹ค.
  • React์—์„œ ์—ฌ๋Ÿฌ๊ฐœ์˜ HTNL ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ํ‘œ์‹œํ•  ๋•Œ map์„ ์ด์šฉํ•ด์•ผ ํ•œ๋‹ค.

ํ‘œํ˜„์‹์˜ ์œ ๋ฎค -> ํ‘œํ˜„์‹(๊ฐ’์„ ๋ณ€ํ™˜) -> ๊ฐ’์œผ๋กœ ํ™˜์‚ฐํ•  ์ˆ˜ ์žˆ๋‹ค.


๐ŸŒ– create-react-app

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


๐ŸŒˆ ํšŒ๊ณ 

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

profile
์‹ค์ˆ˜๋ฅผ ๋‘๋ ค์›Œ ๋ง๊ณ  ๊ณ„์† ๋„์ „ ํ•˜๋Š” ๊ฐœ๋ฐœ์ž์˜ ์—ฌ์ •!
post-custom-banner

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