๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“‘Library/๐ŸŒReact

React๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

by ๋…น์ฐจ๋ง›๊ฐœ๊ตฌ๋ฆฌ 2022. 12. 9.

๐Ÿ™‹๐Ÿป‍โ™‚๏ธํ”„๋ก ํŠธ์—”๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ

ํ”„๋ก ํŠธ์•ค๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋“ฑ์žฅํ•˜๊ฒŒ ๋œ ์ด์œ ๋Š” ๋™์ ์ธ ์›น ํŽ˜์ด์ง€๋ฅผ ๋ณด๋‹ค ํšจ์œจ์ ์œผ๋กœ ์œ ์ง€ ๋ณด์ˆ˜ํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค.

 

์ •์  ์›น ํŽ˜์ด์ง€

  • ์›น ์„œ๋ฒ„์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” HTML ๋ฌธ์„œ๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌํ•˜์—ฌ ๋ฐ›์€ ํŽ˜์ด์ง€.
  • ๋‹จ์ˆœํžˆ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋กœ๊ทธ์ธ์„ ํ•œ๋‹ค๊ฑฐ๋‚˜ ๋ญ”๊ฐ€ ์ •๋ณด๋ฅผ ๋ณด๋‚ธ๋‹ค๊ฑฐ๋‚˜ ํ•˜๋Š” ์ƒํ˜ธ์ž‘์šฉ์€ ์ค‘์š”ํ•˜์ง€ ์•Š์€ ์š”์†Œ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
  • ์‚ฌ์šฉ์ž๋Š” ์„œ๋ฒ„์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š” ํ•œ ๊ณ ์ •๋œ ์›น ํŽ˜์ด์ง€๋ฅผ ๋ณด๊ฒŒ ๋œ๋‹ค.
  • ์ด๋Ÿฐ ๊ฒฝ์šฐ์—” ๋‹จ์ˆœํžˆ HTML๊ณผ CSS์˜ ๊ตฌ์„ฑ๋งŒ์œผ๋กœ๋„ ์›น ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
  • Ex) ํ™ˆํŽ˜์ด์ง€์— ํšŒ์‚ฌ์†Œ๊ฐœ, ์Œ์‹๋ฉ”๋‰ด, ํฌํŠธํด๋ฆฌ์˜ค ๋“ฑ ๋‚ด์šฉ์ด ๋ณ€ํ•˜์ง€ ์•Š๊ณ  ๊ณ ์ •์ ์ธ ํŽ˜์ด์ง€.

 

๋™์  ์›น ํŽ˜์ด์ง€

  • ์š”์ฒญ ์ •๋ณด๋ฅผ ์ฒ˜๋ฆฌํ•œ ํ›„์— ์ œ์ž‘๋œ HTML ๋ฌธ์„œ๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „์†กํ•˜๋Š” ์›น ํŽ˜์ด์ง€
  • ์‚ฌ์šฉ์ž๋Š” ์ƒํ™ฉ, ์‹œ๊ฐ„, ์š”์ฒญ ๋“ฑ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋Š” ์›น ํŽ˜์ด์ง€๋ฅผ ๋ณด๊ฒŒ ๋จ
  • ๊ฐ™์€ ํŽ˜์ด์ง€๋ผ๋„ ์‚ฌ์šฉ์ž๋งˆ๋‹ค ๋‹ค๋ฅธ ๊ฒฐ๊ณผ์˜ ์›น ํŽ˜์ด์ง€๋ฅผ ์„œ๋ฒ„์— ์š”์ฒญํ•˜๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ
  • ์šฐ๋ฆฌ๊ฐ€ ๋ณด๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์›น ํŽ˜์ด์ง€๋Š” ๋™์  ์›น ํŽ˜์ด์ง€
  • Ex) ๋„ค์ด๋ฒ„ ๋ธ”๋กœ๊ทธ, ํ‹ฐ์Šคํ† ๋ฆฌ, ํ™ˆํŽ˜์ด์ง€ ๊ฒŒ์‹œํŒ ๋“ฑ

 

๋™์ ์ธ ํŽ˜์ด์ง€๊ฐ€ ์ฃผ๋ฅผ ์ด๋ฃจ๋Š” ์š”์ฆ˜, ์›น ํŽ˜์ด์ง€๋ผ๊ธฐ ๋ณด๋‹ค, ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋ผ๋Š” ์šฉ์–ด๊ฐ€ ๋” ์–ด์šธ๋ฆด ์ •๋„๋กœ ์œ ์ € ์ธํ„ฐ๋ž™์…˜์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ƒํƒœ ๋ณ€ํ™”๊ฐ€ ์ƒ๋‹นํžˆ ๋งŽ์•„์กŒ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์ž์—ฐ์Šค๋Ÿฌ์šด ์œ ์ € ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋งŒ๋“ค์–ด์ฃผ๊ธฐ ์œ„ํ•ด์„œ ํ”„๋ก ํŠธ์•ค๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ / ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋“ฑ์žฅํ•˜๊ฒŒ ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 


๐Ÿ™†๐Ÿป‍โ™‚๏ธํ”„๋ก ํŠธ์•ค๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์žฅ์ 

์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋ผ ๋ถˆ๋ฆด ๋งŒํผ, ๋‹ค์–‘ํ•œ ์œ ์ € ์ธํ„ฐ๋ž™์…˜์ด ์ „๋‹ฌ๋œ๋‹ค๋ฉด

๊ทธ๋งŒํผ DOM ์š”์†Œ๋“ค ๋˜ํ•œ ๋ณ€ํ™”๊ฐ€ ์ด๋ฃจ์–ด์ ธ์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค.

DOM ์š”์†Œ๋“ค์ด ๋ณ€ํ™”ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋žœ๋” ํŠธ๋ฆฌ ๋ฆฌ๋ Œ๋”, ์š”์†Œ์˜ ์Šคํƒ€์ผ ๊ณ„์‚ฐ, ๋ ˆ์ด์•„์›ƒ ๊ตฌ์„ฑ, ํŒจ์ธํŒ… ํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์ณ์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ๊ณผ ๊ฐ™๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฌํ•œ ๊ณผ์ •์ด ๋ฐ˜๋ณต๋˜๋ฉด ๋ ์ˆ˜๋ก ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋งŽ์€ ์—ฐ์‚ฐ์„ ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๊ณ , ์ด๋Š” ์ „์ฒด์ ์ธ ํ”„๋กœ์„ธ์Šค์˜ ๋น„ํšจ์œจ์„ฑ์„ ๊ฐ€์ ธ์˜จ๋‹ค.

 

DOM ๋™์ž‘์›๋ฆฌ์— ๋Œ€ํ•ด์„œ๋Š” ์ด๊ธ€ ์„ ์ฐธ๊ณ 

 

๊ฒฐ๊ตญ, ํ”„๋ก ํŠธ์•ค๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ / ํ”„๋ ˆ์ž„์›Œํฌ๋Š” DOM ๊ด€๋ฆฌ์™€ ์ƒํƒœ ๋ณ€ํ™” ๊ด€๋ฆฌ๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ณ , ๊ฐœ๋ฐœ์ž๋Š” ์˜ค์ง ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ, ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์— ๋ณด๋‹ค ๋” ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๊ฒƒ์ด๋ฉฐ ์ด๋Ÿฌํ•œ ๋ชฉ์ ์„ ๊ฐ€์ง€๊ณ  ๋‹ค์–‘ํ•œ ํ•ด๊ฒฐ ๋ฐฉ์‹, ์ถ”๊ตฌ ๋ฐฉํ–ฅ์„ ๊ฐ€์ง€๊ณ  ๊ฐ๊ฐ์˜ ํ”„๋ก ํŠธ์•คํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ / ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ํƒ„์ƒํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

 

 


Why React?

 

๊ฐ๊ฐ์˜ ํ”„๋ก ํŠธ์•คํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ / ํ”„๋ ˆ์ž„์›Œํฌ๋“ค์€ ์ถ”๊ตฌํ•˜๋Š” ๋ฐฉํ–ฅ๊ณผ ํŠน์ง•๋“ค์ด ๋‹ค๋ฅด์ง€๋งŒ

์ด๊ธ€์€ React๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๋‹ค๋ฃจ๊ณ  ์žˆ๋‹ค.

 


๐Ÿ‘‰๐ŸปReact ํŠน์ง•

0๏ธโƒฃVirtual DOM

๋ฆฌ์•กํŠธ์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง• ์ค‘ ํ•˜๋‚˜์ด๋‹ค.

๊ธฐ์กด์˜ DOM์€ ํŽ˜์ด์ง€๊ฐ€ ๋ฐ”๋€” ๋•Œ๋งˆ๋‹ค, ์ƒˆ HTML๋ฅผ ๋กœ๋“œํ•˜๋ฉด์„œ DOM ์ „์ฒด๋ฅผ ๋ฐ”๊พธ๊ฒŒ ๋œ๋‹ค.

 

ํ•˜์ง€๋งŒ Virtual Dom์€ React ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ฆฌํ„ดํ•˜๋Š” ๊ฐ’์— ์˜ํ•ด ๋งŒ๋“ค์–ด์ ธ์„œ ์‹ค์ œ ๋ณด์ด๊ณ  ์žˆ๋Š” DOM๊ณผ ๋น„๊ตํ•ด์„œ ๋‹ฌ๋ผ์ง„ ๋ถ€๋ถ„๋งŒ ์ฐพ์•„๋‚ด์–ด ๋ฐ”๊พธ๊ฒŒ ๋œ๋‹ค. ์ด๋Ÿฌํ•œ Virtual DOM ๋•Œ๋ฌธ์— React์—์„œ ์ปดํฌ๋„ŒํŠธ ๋‹จ์œ„์˜ ๊ฐœ๋ฐœ์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

 

Virtual DOM ๋™์ž‘ ์›๋ฆฌ

Virtula DOM์„ ์•Œ๊ธฐ์œ„ํ•ด ๋จผ์ € DOM์ด๋ž€ ๋ญ”์ง€ ์•Œ์•„์•ผํ•œ๋‹ค. DOM(Document Object Model) DOM์€ ๋ฌธ์„œ ๊ฐ์ฒด ๋ชจ๋ธ์ด๋ผ๊ณ  ํ•˜๋Š”๋ฐ ๊ฒฐ๊ตญ์€ ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋‹ค๋ฃฐ HTML ๋ฌธ์„œ๋ฅผ ํŒŒ์‹ฑํ•˜์—ฌ "๋ฌธ์„œ์˜ ๊ตฌ์„ฑ์š”์†Œ๋“ค์„ ๊ฐ์ฒด๋กœ ๊ตฌ์กฐํ™”

greenteafrog.tistory.com

 

1๏ธโƒฃReact Native์˜ ์•ฑ ๊ฐœ๋ฐœ ๊ฐ€๋Šฅ

์›น๊ณผ ์•ฑ์€ ์—„์ฒญ๋‚œ ์—ฐ๊ด€์ด ์žˆ๋‹ค. ์›น ํ”„๋กœ์ ํŠธ๊ฐ€ ๋๋‚˜ React ํ•˜๋‚˜๋งŒ ์ž˜ ํ™œ์šฉํ•˜์—ฌ๋„ React Native๋กœ native moblie app์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ.

 

2๏ธโƒฃ์ˆ˜ ๋งŽ์€ ์ปค๋ฎค๋‹ˆํ‹ฐ

๊ฐœ๋ฐœ์„ ํ•˜๋‹ค๋ณด๋ฉด ๋ง‰ํžˆ๋Š” ๋ถ€๋ถ„, ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š” ๋ถ€๋ถ„์ด ์ƒ๊ธฐ๋ฉฐ, ์˜ค๋ฅ˜์— ๋Œ€ํ•œ ์„ ํ–‰ ํ•ด๊ฒฐ๋ฒ•๊ณผ ์ž๋ฃŒ๋“ค์€ ๋ฌธ์ œํ•ด๊ฒฐ์— ์žˆ์–ด์„œ

ํฐ ์‹œ๊ฐ„๋‹จ์ถ•์˜ ์ด์ ์„ ๊ฐ€์ ธ์˜จ๋‹ค ์ด์— ์žˆ์–ด์„œ React๋Š”  facebook์—์„œ ๋งŒ๋“ค์–ด ๊ณ„์†๋˜๋Š” ์—…๋ฐ์ดํŠธ์™€ ์ž๋ฃŒ๊ฐ€ ๊ต‰์žฅํžˆ ๋ฐฉ๋Œ€ํ•˜๋‹ค.

 

3๏ธโƒฃComponent ๋‹จ์œ„ ์ž‘์„ฑ

์ปดํฌ๋„ŒํŠธ๋Š” UI๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฐœ๋ณ„์ ์ธ ๋ทฐ ๋‹จ์œ„๋กœ ์„œ๋กœ์„œ, UI ๊ฐœ๋ฐœ์„ ๋ ˆ๊ณ ๋ผ๊ณ  ํ•œ๋‹ค๋ฉด, ์ปดํฌ๋„ŒํŠธ๋Š” ๋ธ”๋ก ์—ญํ• ์„ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ธ”๋ก์„ ์กฐ๋ฆฝํ•ด ํ•˜๋‚˜์˜ ์™„์„ฑํ’ˆ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค.

 

์ด๋Ÿฌํ•œ ์ปดํฌ๋„ŒํŠธ๋“ค์„ ๋‚˜๋ˆ ๋†จ๊ธฐ์— ๋‹ค๋ฅธ ๋ถ€๋ถ„, ๋˜ ๋‹ค๋ฅธ ์›น์—์„œ ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•ด์ง€๋ฉฐ. ์ด๋Š” ์ƒ์‚ฐ์„ฑ๊ณผ ์œ ์ง€ ๋ณด์ˆ˜๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ํ•œ๋‹ค. ๋ธŒ๋ผ์šฐ์ € ํ™”๋ฉด์ƒ์— ๋ณด์ด๋Š” ํ•˜๋‚˜ํ•˜๋‚˜์˜ ๋ฒ„ํŠผ, ํƒญ, ์•„์ด์ฝ˜ ๋“ฑ์ด ๋ชจ๋‘ ์ปดํฌ๋„ŒํŠธ๋ผ๊ณ  ๋ณด๊ณ  ์ด ๊ฒƒ๋“ค์ด ๋ชจ์—ฌ ํ•˜๋‚˜์˜ ๋ทฐ(VIEW)๋ฅผ ์™„์„ฑํ•˜๊ฒŒ ๋œ๋‹ค.

 

4๏ธโƒฃSPA(Single-Page-Application)

SPA(Single-Page-Application)์ด๋ž€ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€๋ฅผ ๋ถˆ๋Ÿฌ์˜ค์ง€ ์•Š๊ณ , ํ˜„์žฌ์˜ ํŽ˜์ด์ง€๋ฅผ ๋™์ ์œผ๋กœ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์˜๋ฏธํ•œ๋‹ค. ํ•˜๋‚˜์˜ HTML ํŽ˜์ด์ง€์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰์— ํ•„์š”ํ•œ Javascript, CSS ๊ฐ™์€ ๋ชจ๋“  ์ž์‚ฐ์„ ๋กœ๋“œํ•œ๋‹ค.

 

ํŽ˜์ด์ง€ ๋˜๋Š” ํ›„์† ํŽ˜์ด์ง€์˜ ์ƒํ˜ธ์ž‘์šฉ์€ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€๋ฅผ ๋ถˆ๋Ÿฌ์˜ค์ง€ ์•Š์œผ๋ฏ€๋กœ ํŽ˜์ด์ง€๊ฐ€ ๋‹ค์‹œ ๋กœ๋“œ๋˜์ง€ ์•Š๋Š”๋‹ค. ์ปดํฌ๋„ŒํŠธ๋“ค์ด ๋ชจ์—ฌ ํ•œ ํŽ˜์ด์ง€๋ฅผ ์ž‘์„ฑํ•˜๊ณ , ํŠน์ • ๋ถ€๋ถ„๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”์ธ๋”ฉํ•˜๋Š” ๊ฐœ๋…์ด๋‹ค. ์š”์ฒญ URL์— ๋”ฐ๋ผ ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ•ด๋‹น URL์˜ ์ปดํฌ๋„ŒํŠธ๋“ค์„ ํ˜ธ์ถœํ•œ๋‹ค.

ํŽ˜์ด์ง€ ๊ฐฑ์‹ ์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ์„ ์ „๋‹ฌ๋ฐ›์•„ ํŽ˜์ด์ง€๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋ฏ€๋กœ ์ „์ฒด์ ์ธ ํŠธ๋ž˜ํ”ฝ์ด ๊ฐ์†Œ๋œ๋‹ค.

 

5๏ธโƒฃClient-Side-Rendering

React๋Š” Client-Side-Rendering ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜๊ณ , SPA๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ HTML์€ ๋น„์–ด์žˆ๊ณ , Javascript๊ฐ€ ๋™์ž‘ํ•˜๋ฉด์„œ ๋ฐ์ดํ„ฐ๋งŒ์„ ์ฃผ๊ณ  ๋ฐ›์•„์„œ ํด๋ผ์ด์–ธํŠธ์—์„œ ๋ Œ๋”๋ง์„ ์ง„ํ–‰ํ•œ๋‹ค.

React ์ฝ”๋“œ๊ฐ€ Javascript ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ ๋œ bundle.js๋ฅผ ๊ฐ–๊ณ , ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๊ทธ Javascript ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ด์„œ DOM์„ ๊ทธ๋ฆฐ๋‹ค. ํŽ˜์ด์ง€ ์ „์ฒด๋ฅผ ์š”์ฒญํ•˜์ง€ ์•Š๊ณ  ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ๋ณ€๊ฒฝํ•˜๊ฒŒ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ชจ๋ฐ”์ผ ๋„คํŠธ์›Œํฌ์—์„œ๋„ ๋น ๋ฅธ ์†๋„๋กœ ๋ Œ๋”๋ง์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

ํ•˜์ง€๋งŒ ์„œ๋ฒ„์—์„œ ๋‚ด๋ ค ๋ฐ›๋Š” HTML์€ ๋น„์–ด์žˆ๋Š” ์ƒํƒœ์ด๋ฏ€๋กœ, ๊ฒ€์ƒ‰ ์—”์ง„ ์ตœ์ ํ™”(search engine optimization, SEO)์— ๋ถˆ๋ฆฌํ•˜๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

 

6๏ธโƒฃJSX

JSX(Javascript + xml)๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์— ๋Œ€ํ•œ ํ™•์žฅ ๊ตฌ๋ฌธ์œผ๋กœ์„œ, ๋ฆฌ์•กํŠธ์—์„œ element(์š”์†Œ)๋ฅผ ์ œ๊ณตํ•ด ์ค๋‹ˆ๋‹ค. ์žฅ์ ์€ ๋งค์šฐ ๋‹ค์–‘ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋งˆํฌ์—… ์ฝ”๋“œ์— ์ต์ˆ™ํ•˜๋‹ค๋ฉด, ๊ทธ๊ฒƒ๋งŒ์œผ๋กœ๋„ JSX๋ฅผ ํ†ตํ•ด ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ์‰ฝ๊ฒŒ ์ ์‘ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

์•„๋ž˜ ์ฝ”๋“œ์—์„œ return () ์— ๊ฐ์‹ธ์ ธ ์žˆ๋Š” HTML ๋ฌธ๋ฒ•๊ณผ ๋งค์šฐ ์œ ์‚ฌํ•œ ์ฝ”๋“œ๊ฐ€ ๋ฐ”๋กœ JSX์ž…๋‹ˆ๋‹ค.

import React from "react";
import logo from "./logo.svg";
import "./App.css";

const App = () => {
  return (
    <div className="App">
      <header className="App-header">
        <img src={logo} className="App-logo" alt="logo" />
        <h1 className="App-title">Welcome to React</h1>
      </header>
      <p className="App-intro">
        To get started, edit <code>src/App.js</code> and save to reload.
      </p>
    </div>
  );
};

export default App;

์œ„์™€ ๊ฐ™์€ ์ฝ”๋“œ๋Š” creata-react-app์„ ํ†ตํ•ด ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ํฌํ•จ๋˜์–ด ์žˆ๋Š” Babel์ด ์•„๋ž˜์™€ ๊ฐ™์€ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ปดํŒŒ์ผ ํ•ด์ค๋‹ˆ๋‹ค.

"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.default = void 0;

var _react = _interopRequireDefault(require("react"));

var _logo = _interopRequireDefault(require("./logo.svg"));

require("./App.css");

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

const App = () => {
  return /*#__PURE__*/_react.default.createElement("div", {
    className: "App"
  }, /*#__PURE__*/_react.default.createElement("header", {
    className: "App-header"
  }, /*#__PURE__*/_react.default.createElement("img", {
    src: _logo.default,
    className: "App-logo",
    alt: "logo"
  }), /*#__PURE__*/_react.default.createElement("h1", {
    className: "App-title"
  }, "Welcome to React")), /*#__PURE__*/_react.default.createElement("p", {
    className: "App-intro"
  }, "To get started, edit ", /*#__PURE__*/_react.default.createElement("code", null, "src/App.js"), " and save to reload."));
};

var _default = App;
exports.default = _default;

๋•๋ถ„์— ์šฐ๋ฆฌ๋Š” ์ต์ˆ™ํ•œ HTML๋ฌธ๋ฒ•๊ณผ ์œ ์‚ฌํ•œ JSX๋ฅผ ํ†ตํ•ด ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

 

 

๐Ÿ“š์ถœ์ฒ˜/์ฐธ๊ณ 

https://gurtn.tistory.com/96

https://velog.io/@youthfulhps/React-React๋ฅผ-์‚ฌ์šฉํ•˜๋Š”-์ด์œ 

728x90