๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์‹œ๋„/Code-States

[D+74] React์— ๋Œ€ํ•œ ๋‚˜์˜ ์ƒ๊ฐ

by ๐Ÿ‡๋ฐ•๋ด‰๋ด‰๐Ÿ‡ 2020. 12. 31.

 

D+74

-  React์— ๋Œ€ํ•œ ๋‚˜์˜ ์ƒ๊ฐ -

(๋ฆฌ์•กํŠธ ์งˆ๋ฌธ์— ๋‹ตํ•˜๊ธฐ)

 


 

 

• JSX ๋ฌธ๋ฒ•์„ ๋„์ž…ํ•˜๊ฒŒ ๋œ ์ด์œ ๊ฐ€ ๋ฌด์—‡์ผ๊นŒ์š”? ์–ด๋–ค ์žฅ์ ์ด ์žˆ๋‚˜์š”?

๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ์€ JavaScript ์ฝ”๋“œ ์•ˆ์—์„œ UI ๊ด€๋ จ ์ž‘์—…์„ ํ•  ๋•Œ ์‹œ๊ฐ์ ์œผ๋กœ ๋” ๋„์›€์ด ๋˜์–ด ๊ฐ€๋…์„ฑ์ด ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.
๋˜ํ•œ React๊ฐ€ ๋”์šฑ ๋„์›€์ด ๋˜๋Š” ์—๋Ÿฌ ๋ฐ ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์ค€๋‹ค.

 

• JSX๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  React๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‚˜์š”?

JSX๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋ฆฌ์•กํŠธ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

• JSX์— JavaScript ํ‘œํ˜„์‹์„ ์“ฐ๋ ค๋ฉด ์–ด๋–ค ๋ฐฉ๋ฒ•์œผ๋กœ ์จ์•ผ ํ•˜๋‚˜์š”?

JSX์•ˆ์—์„œ์˜ ์ค‘๊ด„ํ˜ธ({ })๋ฅผ ํ†ตํ•˜์—ฌ ์œ ํšจํ•œ ๋ชจ๋“  JavaScript ํ‘œํ˜„์‹์„ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.

 

• import / export ๊ตฌ๋ฌธ์€ ์–ด๋–ค ์‹์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

export๋Š” ํŠน์ • ๊ฐ’์„ ๋‚ด๋ณด๋‚ด๊ณ  import๋Š” export๋ฅผ ํ†ตํ•ด ๋‚˜์˜จ ๊ฒƒ์„ ๋“ค์—ฌ์˜ค๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.
(default๋กœ export ํ•˜๊ฒŒ ๋˜๋ฉด ์ด๋ฆ„์„ ๋‹ค๋ฅด๊ฒŒ ํ•ด์„œ ๋ฐ›์•„์™€๋„ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค)

 

•DOM์„ ์ฒ˜์Œ ๋ฐฐ์šธ ๋•Œ ํŽ˜์ด์ง€ ๋‹จ์œ„๋กœ ์ž‘์—…ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ๋น„๊ตํ•ด์„œ, ์ปดํฌ๋„ŒํŠธ ๋‹จ์œ„๋กœ ๊ฐœ๋ฐœํ•  ๋•Œ์˜ ์žฅ์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

์žฌ์‚ฌ์šฉ์„ฑ์ด ๋›ฐ์–ด๋‚˜๊ณ , ํ…Œ์ŠคํŠธํ•  ๋•Œ์˜ ๊ฐ๊ฐ์˜ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋…๋ฆฝ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ํ…Œ์ŠคํŠธ ํ•  ๋•Œ ํŽธ๋ฆฌํ•˜๋‹ค.

 

• ํ•˜๋‚˜์˜ ์ปดํฌ๋„ŒํŠธ์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ๋ฆฌํ„ดํ•  ์ˆ˜๋„ ์žˆ๋‚˜์š”?

fragment๋ฅผ ํ†ตํ•˜์—ฌ ๊ฐ€๋Šฅํ•˜๊ณ  ๋˜ํ•œ ๋‹จ์ถ• ๋ฌธ๋ฒ•์ธ ๋นˆ ํƒœ๊ทธ๋กœ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.
ํ—ˆ๋‚˜ fragment์— key๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด react.fragment๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์„ ์–ธํ•ด์•ผ ํ•œ๋‹ค.

 

• <Tweet> ๋‚˜์˜ ์ƒˆ ํŠธ์œ— </Tweet>์ด๋ผ๋Š” ์ปดํฌ๋„ŒํŠธ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•  ๋•Œ, ์ปดํฌ๋„ŒํŠธ ๋‚ด์—์„œ ๋‚˜์˜ ์ƒˆ ํŠธ์œ—์ด๋ผ๋Š” ๋ฌธ์ž์—ด์€ ์–ด๋–ป๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

props.children

 

• props๋ฅผ ๋‹ค๋ฃฐ ๋•Œ์— ์ง€์ผœ์•ผ ํ•˜๋Š” ์—„๊ฒฉํ•œ ๊ทœ์น™์ด ํ•˜๋‚˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌด์—‡์ธ๊ฐ€์š”?

๋ชจ๋“  react์ปดํฌ๋„ŒํŠธ๋Š” ์ž์‹ ์˜ props๋ฅผ ๋‹ค๋ฃฐ ๋•Œ, ๋ฐ˜๋“œ์‹œ ์ˆœ์ˆ˜ ํ•จ์ˆ˜์ฒ˜๋Ÿผ ๋™์ž‘ํ•ด์•ผ ํ•œ๋‹ค.
์ˆœ์ˆ˜ ํ•จ์ˆ˜๋ž€, ์ž…๋ ฅ๊ฐ’์„ ๋ฐ”๊พธ๋ ค ํ•˜์ง€ ์•Š๊ณ  ํ•ญ์ƒ ๋™์ผํ•œ ์ž…๋ ฅ๊ฐ’์— ๋Œ€ํ•ด ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

• ์ปดํฌ๋„ŒํŠธ์—์„œ ๋ฐฐ์—ด์˜ ๊ฐœ์ˆ˜๋งŒํผ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ๋ Œ๋”๋ง ํ•˜๊ณ ์ž ํ•  ๋•Œ, ์–ด๋–ค ๋ฐฉ๋ฒ•์œผ๋กœ ๋ Œ๋”๋ง ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

map() ํ•จ์ˆ˜๋ฅผ ํ†ตํ•˜์—ฌ ๋ Œ๋”๋ง์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. (forEach๋Š” ๋ฆฌํ„ด์ด ์—†์œผ๋ฏ€๋กœ ํ•  ์ˆ˜ ์—†๋‹ค)
์ด๋•Œ map() ํ•จ์ˆ˜๋ฅผ ์ ์šฉํ•  ์‹œ์—, ์œ ๋‹ˆํฌํ•œ key๊ฐ’๋„ ๋„ฃ์–ด์ค˜์•ผ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

• props์™€ state์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

props๋Š” ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ ๋ณ€ํ•˜๋ฉด ์•ˆ ๋œ๋‹ค.
state๋Š” ํŠน์ • ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๋ณ€ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ์ด๋‹ค.

 

• ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” this.setState๋Š” ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋‚˜์š”?

this.setState (์ƒ๋ช…์ฃผ๊ธฐ์™€ ์—ฐ๊ด€)

 

•React์—์„œ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ์— HTML์—์„œ์™€ ๋‹ค๋ฅธ ํŠน์ง•์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

this.bind

 

• ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ ์‹œ, ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด this ๋ฐ”์ธ๋”ฉ์„ ํ•ด์ค˜์•ผ ํ•˜๋Š” ์ด์œ ๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€์š”?

this๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฒŒ window๋‚˜ global์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€