TIL18: React ๊ธฐ์ดˆ

Section 1์˜ ๋งˆ์ง€๋ง‰ ๊ณผ์ • React์— ๋“ค์–ด๊ฐ”์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฒฝํ—˜ ์žˆ์œผ์‹  ๋ถ„๋“ค์ด ๋Œ€๋ถ€๋ถ„ ๊ณ ์ฐจํ•จ์ˆ˜๋ž‘ React๋ถ€๋ถ„ ์–ด๋ ต๋‹ค๊ณ  ํ•˜์…จ๋Š”๋ฐ, ์ •๋ง React๋Š” ์–ด๋ ค์› ์–ด์š”...

์ต์ˆ™ํ•ด์ง€๋ฉด ์˜คํžˆ๋ ค HTML CSS DOM ๋”ฐ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ํŽธํ•  ๊ฒƒ ๊ฐ™์€๋ฐ ์•„์ง์€ ์†์— ์•ˆ์ต๋„ค์š”ใ… ใ… ใ… 

๋ณต์Šต ๋งˆ์ € ์—ด์‹ฌํžˆ ํ•ด์•ผํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค!

 

๋ฆฌ์—‘ํŠธ (React)

React๋Š” ํ”„๋ก ํŠธ์•ค๋“œ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ JavaScript ์˜คํ”ˆ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค.

ํฌ๊ฒŒ 3๊ฐ€์ง€ ํŠน์ง•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

1. ์„ ์–ธํ˜•: JSX๋ฅผ ํ™œ์šฉํ•ด์„œ ์„ ์–ธํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ง€ํ–ฅํ•ฉ๋‹ˆ๋‹ค. HTML CSS JS๋กœ ๋‚˜๋ˆ  ์ ๋Š” ๊ฒƒ๊ณผ ๋‹ฌ๋ฆฌ ํ•˜๋‚˜์˜ ํŒŒ์ผ์— ๋ช…์‹œ์ ์œผ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

2. ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜: ์ปดํฌ๋„ŒํŠธ๋กœ ๋ถ„๋ฆฌํ•˜๋ฉด ์„œ๋กœ ๋…๋ฆฝ์ ์ด๊ณ  ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ธฐ๋Šฅ ์ž์ฒด์— ์ง‘์ค‘ํ•˜์—ฌ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3. ๋ฒ”์šฉ์„ฑ: React๋Š” JavaScript ํ”„๋กœ์ ํŠธ ์–ด๋””์—๋“  ์œ ์—ฐ์ ์œผ๋กœ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋Ÿผ '1. ์„ ์–ธํ˜•'์—์„œ ์–ธ๊ธ‰ํ•œ JSX๋Š” ๋ฌด์—‡์ผ๊นŒ์š”?

JSX๋Š” JavaScript XML์˜ ์ค„์ž„๋ง๋กœ React์—์„œ UI๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ๋ฒ•์ž…๋‹ˆ๋‹ค. 

JavaScript๋ฅผ ํ™•์žฅํ•œ ๋ฌธ๋ฒ•๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ์ฝ”๋“œ์˜ ๋ณต์žก์„ฑ์„ ์ค„์ด๊ณ , Element๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Babel์€ JSX๋ฅผ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” JavaScript๋กœ ์ปดํŒŒ์ผํ•ฉ๋‹ˆ๋‹ค.

์ปดํŒŒ์ผ ํ›„, JavaScript๋ฅผ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ฝ๊ณ  ํ™”๋ฉด์— ๋ Œ๋”๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

 

'2. ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜'์—์„œ์˜ ์ปดํฌ๋„ŒํŠธ๋Š” ๋ฌด์—‡์ผ๊นŒ์š”?

๊ตฌ์กฐ์™€ ๋™์ž‘์— ๋Œ€ํ•œ ์ฝ”๋“œ๋ฅผ ํ•œ ๋ญ‰์น˜๋กœ ์ ์€ ์ฝ”๋“œ์…‹์„ ๋งํ•ฉ๋‹ˆ๋‹ค. 

๊ฐ์ž ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์„ ๊ฐ–๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฌํ•œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ•œ ๊ณณ์— ๋ชจ์•„ ๋ณต์žกํ•œ UI๋„ ์‰ฝ๊ฒŒ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค!

 

์ด๋ฒˆ์—๋Š” JSX๋ฅผ ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

HTML์ด๋‚˜ CSS์™€์˜ ์ฐจ์ด์ ์„ ์œ„์ฃผ๋กœ ๊ณต๋ถ€ํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค!

1. ํ•˜๋‚˜์˜ ์—˜๋ฆฌ๋จผํŠธ ์•ˆ์— ๋ชจ๋“  ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ํฌํ•จ์‹œ์ผœ์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ <div></div>๋กœ ๋‚ด์šฉ์„ ๋ถ„๋ฆฌํ•ด์คฌ๋‹ค๊ณ  ๋‹ค ๋๋‚œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ทธ ์—˜๋ฆฌ๋จผํŠธ๋“ค์„ ๋ชจ๋‘ ๋ฌถ์–ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

2. ์—˜๋ฆฌ๋จผํŠธ์— class ์‚ฌ์šฉ์‹œ className์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ์ฃผ์˜ํ•  ์ ์ด ๋””์ž์ธ ๋ถ€์„œ์™€ ์ž˜ ํ˜‘์—…ํ•  ์ˆ˜ ์žˆ๋„๋ก className์„ ์ž˜ ์ง€์–ด์ค˜์•ผ ํ•œ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค!

3. JavaScript ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•ด์ค„ ๋•Œ ์ค‘๊ด„ํ˜ธ๋ฅผ ์ด์šฉํ•ด์„œ ํ…์ŠคํŠธ์™€ ๊ตฌ๋ถ„ํ•ด์ค๋‹ˆ๋‹ค.

4. ์‚ฌ์šฉ์ž๊ฐ€ ์ •์˜ํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„์€ ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

5. ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง์—๋Š” ์‚ผํ•ญ์—ฐ์‚ฐ์ž ์‚ฌ์šฉ์„ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค. 

6. ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ํ‘œ์‹œํ•  ๋•Œ, map ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•œ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. 

 

 

 

์ƒˆ๋กœ ๋ฐฐ์šด ๋‚ด์šฉ

๊ตฌ์กฐ๋ถ„ํ•ดํ• ๋‹น?

'๋ถ„ํ•ด(destructuring)'๋Š” 'ํŒŒ๊ดด(destructive)'๋ฅผ ์˜๋ฏธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น์ด๋ž€ ๋ช…์นญ์€ ์–ด๋–ค ๊ฒƒ์„ ๋ณต์‚ฌํ•œ ์ดํ›„์— ๋ณ€์ˆ˜๋กœ '๋ถ„ํ•ด(destructurize)'ํ•ด์ค€๋‹ค๋Š” ์˜๋ฏธ ๋•Œ๋ฌธ์— ๋ถ™์—ฌ์กŒ์Šต๋‹ˆ๋‹ค.

 

props์™€ states๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ ์žˆ์Œ. 

๋™์ ์ธ์ง€ ์ •์ ์ธ์ง€์— ๋”ฐ๋ผ ์‚ฌ์šฉ ๋‹ฌ๋ผ์ง.

props๋Š” ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์—์„œ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ

 

๋””๋„ˆํด๋Ÿฝ

์ปค๋ฆฌ์–ด์Šคํ‚ฌ, ์™„๋ฒฝํ•œ ๊ณต๋ถ€๋ฒ• ์ด๋ผ๋Š” ์ฑ… ์•Œ์•„๋ณด๊ธฐ

๋ฒˆ์•„์›ƒ ์ด๊ฒจ๋‚ด๊ธฐ

๋ธ”๋กœ๊ทธ ๋งค์šฐ ์ค‘์š”

์ผ๋‹จ ํ•˜๋‹ค๋ณด๋ฉด ์ข‹์•„ํ•˜๋Š” ์ผ๋“ค์ด ์ƒ๊น€