๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ‘ฉโ€๐Ÿ’ป ๊ฐœ๋ฐœ ๊ณต๋ถ€/๊ฐœ๋ฐœ ์„œ์  Read&Write

[์ฒ˜์Œ ๋งŒ๋‚œ ๋ฆฌ์•กํŠธ] React ์ฑ…์ฝ๊ธฐ : Chapter 0-5 ์ •๋ฆฌ

728x90
๋ฐ˜์‘ํ˜•

ํ† ์Šค๋ฑ…ํฌ ๋ฉ˜ํ† ๋‹˜ ์กฐ์–ธ์„ ๋”ฐ๋ผ์„œ ์š”์ฆ˜ ์ „๊ณต์„œ์ (?) ๊ฐœ๋ฐœ์„œ์ (?) ์ฑ…๋“ค์„ ์ฝ๊ณ  ์žˆ๋Š”๋ฐ,

์˜ค๋ž˜ ๊ธฐ์–ตํ•˜๋ ค๋ฉด ๋‚ด์šฉ์„ ์š”์•ฝํ•ด๋‘๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์•„ ์ •๋ฆฌํ•œ๋‹ค.

 

์ด ์ฑ…์€ ์ž…๋ฌธ์ž ๊ธฐ์ค€์ด๋ผ, ์„ค๋ช…์ด ๊ฝค ์ž์„ธํ•˜๋‹ค.

ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๋“ค์€ ๊ฐœ๋…์„ ํƒ„ํƒ„ํžˆ ๋‹ค์ง€๋Š” ๋ฐ์— ๋„์›€์ด ๋  ๊ฒƒ ๊ฐ™๋‹ค.

 

์ง€๊ธˆ ์ฝ๊ณ  ์žˆ๋Š”๊ฑด React ๋„์„œ๋ž‘ Node JS ๋„์„œ์ธ๋ฐ,

์ด๋ฒˆ ๋‹ฌ ๋‚ด๋กœ ์™„๋…ํ•˜๊ณ  Next JS์™€ Springboot ์ฑ…๋„ ์ฝ์–ด๋ณด๊ณ  ์‹ถ๋‹ค.

 

์–ด๋ฆด ๋• ์ฑ…์„ ์ฐธ ์ข‹์•„ํ–ˆ๋Š”๋ฐ, ์š”์ฆ˜์€ ์ฝ์„ ์‹œ๊ฐ„์ด ๋งŽ์ด ์—†์–ด์„œ ์•„์‰ฝ๋‹ค ๐Ÿค“๐Ÿ“–

์š”์•ฝ์€ ๊น”๋”ํ•˜๊ฒŒ ํ•˜๋ ค๊ณ  chatgpt์˜ ๋„์›€์„ ๋ฐ›์•˜๋‹ค!


[ ์ฐธ๊ณ  ์„œ์  : ์†Œํ”Œ์˜ ์ฒ˜์Œ ๋งŒ๋‚œ ๋ฆฌ์•กํŠธ(2ํŒ) - ํ•œ๋น›๋ฏธ๋””์–ด ]

 

๐Ÿ”น ์›น ๊ฐœ๋ฐœ ๊ธฐ๋ณธ ๊ฐœ๋… ์ •๋ฆฌ

๐Ÿ— HTML (HyperText Markup Language)

  • ์›น์‚ฌ์ดํŠธ์˜ ๋ผˆ๋Œ€๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋งˆํฌ์—… ์–ธ์–ด
  • ํƒœ๊ทธ(tag) ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›นํŽ˜์ด์ง€์˜ ๊ตฌ์กฐ๋ฅผ ์ •์˜

๐ŸŽจ CSS (Cascading Style Sheets)

  • ์›น์‚ฌ์ดํŠธ์˜ ๋ ˆ์ด์•„์›ƒ, ๊ธ€๊ผด, ์ƒ‰์ƒ ๋“ฑ์˜ ๋””์ž์ธ์„ ๋‹ด๋‹น

โšก JavaScript (JS)

  • ์›นํŽ˜์ด์ง€์˜ ๋™์ ์ธ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด
  • ์›น์‚ฌ์ดํŠธ๊ฐ€ ์ƒํ˜ธ์ž‘์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋™์ž‘ํ•˜๋„๋ก ํ•จ
  • ์ •์‹ ๋ช…์นญ: ECMAScript
  • ES6(2015๋…„ ์ถœ์‹œ) ์ดํ›„ ๋‹ค์–‘ํ•œ ๋ฌธ๋ฒ•์ด ์ถ”๊ฐ€๋˜๋ฉฐ ํ‘œ์ค€ํ™” ์ง„ํ–‰
  • ์ฃผ์š” ๊ฐœ๋…: ์ž๋ฃŒํ˜•, ์—ฐ์‚ฐ์ž, ํ•จ์ˆ˜ ๋“ฑ

๐Ÿ›  ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ •

  1. Node.js ๋ฐ npm ์„ค์น˜ (JavaScript ์‹คํ–‰ ๋ฐ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ)
  2. VS Code ์„ค์น˜ (์ฝ”๋“œ ํŽธ์ง‘๊ธฐ)

โš›๏ธ React ์ •๋ฆฌ

โœ… React๋ž€?

  • ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค(UI)๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
  • SPA(Single Page Application) ๊ฐœ๋ฐœ์„ ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ๋„์™€์ฃผ๋Š” ๋„๊ตฌ

๐Ÿš€ React์˜ ์žฅ์ 

  • ๋น ๋ฅธ ์—…๋ฐ์ดํŠธ์™€ ๋ Œ๋”๋ง ์†๋„ (Virtual DOM ์‚ฌ์šฉ)
  • ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋†’์€ ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ
  • ๋ฉ”ํƒ€(๊ตฌ ํŽ˜์ด์Šค๋ถ)์˜ ์ง€์›์œผ๋กœ ์ง€์†์ ์ธ ๋ฐœ์ „
  • ํ™œ๋ฐœํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ์™€ ์ง€์‹ ๊ณต์œ 
  • React Native๋ฅผ ์ด์šฉํ•œ ๋ชจ๋ฐ”์ผ ์•ฑ ๊ฐœ๋ฐœ ๊ฐ€๋Šฅ

โš ๏ธ React์˜ ๋‹จ์ 

  • ๋ฐฉ๋Œ€ํ•œ ํ•™์Šต๋Ÿ‰ (JSX, ์ƒํƒœ ๊ด€๋ฆฌ, ํ›… ๋“ฑ ์ตํ˜€์•ผ ํ•  ๊ฐœ๋… ๋งŽ์Œ)
  • ์ƒํƒœ ๊ด€๋ฆฌ์˜ ๋ณต์žก์„ฑ (Redux, Context API ๋“ฑ ์ถ”๊ฐ€ ๋„๊ตฌ ํ•„์š”ํ•  ์ˆ˜๋„ ์žˆ์Œ)

๐Ÿ“ JSX ์ •๋ฆฌ

โœ… JSX๋ž€?

  • JavaScript์™€ XML/HTML์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” JavaScript์˜ ํ™•์žฅ ๋ฌธ๋ฒ•

๐Ÿ”น JSX์˜ ์—ญํ• 

  • JSX๋กœ ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋Š” JavaScript ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜๋จ
  • React๋Š” JSX ์ฝ”๋“œ๋ฅผ createElement() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜

๐Ÿš€ JSX์˜ ์žฅ์ 

  • ์ฝ”๋“œ๊ฐ€ ๊ฐ„๊ฒฐํ•ด์ง
  • ๊ฐ€๋…์„ฑ์ด ํ–ฅ์ƒ๋จ
  • Injection Attack ๋ฐฉ์–ด โ†’ ๋ณด์•ˆ์„ฑ์ด ํ–ฅ์ƒ๋จ

๐Ÿ”น JSX ์‚ฌ์šฉ๋ฒ•

  • ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  JavaScript ๋ฌธ๋ฒ•์„ ์ง€์›
  • JavaScript ์ฝ”๋“œ์— XML๊ณผ HTML์„ ํ˜ผํ•ฉํ•˜์—ฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • {}(์ค‘๊ด„ํ˜ธ)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ JavaScript ์ฝ”๋“œ๋ฅผ ์‚ฝ์ž…

๐Ÿ”น React ์—˜๋ฆฌ๋จผํŠธ(Element) ์ •๋ฆฌ

โœ… ์—˜๋ฆฌ๋จผํŠธ๋ž€?

  • ๋ฆฌ์•กํŠธ ์•ฑ์˜ ๊ฐ€์žฅ ์ž‘์€ ๋นŒ๋”ฉ ๋ธ”๋ก
  • ํ™”๋ฉด์— ๋‚˜ํƒ€๋‚˜๋Š” ๋‚ด์šฉ์„ ๊ธฐ์ˆ ํ•˜๋Š” JavaScript ๊ฐ์ฒด
  • DOM ์—˜๋ฆฌ๋จผํŠธ์˜ ๊ฐ€์ƒ ํ‘œํ˜„ (Virtual DOM ๊ธฐ๋ฐ˜)

๐Ÿ”น ์—˜๋ฆฌ๋จผํŠธ์˜ ์ƒ๊น€์ƒˆ

  • JavaScript ๊ฐ์ฒด ํ˜•ํƒœ
  • ์ปดํฌ๋„ŒํŠธ ์œ ํ˜•, ์†์„ฑ, ๋‚ด๋ถ€ ์ž์‹ ์š”์†Œ ๋“ฑ์˜ ์ •๋ณด ํฌํ•จ

๐Ÿš€ ์—˜๋ฆฌ๋จผํŠธ์˜ ํŠน์ง•

  • ๋ถˆ๋ณ€์„ฑ(Immutability) โ†’ ์ƒ์„ฑ ํ›„ ์ž์‹์ด๋‚˜ ์†์„ฑ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Œ

๐Ÿ”น ์—˜๋ฆฌ๋จผํŠธ ๋ Œ๋”๋ง

  • ReactDOM.createRoot() ๋กœ ๋งŒ๋“  root์˜ render() ํ•จ์ˆ˜ ์‚ฌ์šฉ
  • React ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์‹ค์ œ HTML ์—˜๋ฆฌ๋จผํŠธ๋กœ ๋ Œ๋”๋ง
  • ๋ Œ๋”๋ง ๊ณผ์ •: Virtual DOM โ†’ ์‹ค์ œ DOM ๋ฐ˜์˜

๐Ÿ”„ ์—˜๋ฆฌ๋จผํŠธ ์—…๋ฐ์ดํŠธ

  • ์—˜๋ฆฌ๋จผํŠธ๋Š” ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์ƒˆ๋กœ์šด ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๊ต์ฒด
  • ๊ธฐ์กด ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ƒˆ๋กœ์šด ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ๋งŒ๋“ค์–ด ๋ฐ”๊ฟ”์น˜๊ธฐ

โš›๏ธ React ์ปดํฌ๋„ŒํŠธ ์ •๋ฆฌ

โœ… ์ปดํฌ๋„ŒํŠธ๋ž€?

  • ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ
    • ์ž‘์€ ์ปดํฌ๋„ŒํŠธ๋“ค์ด ๋ชจ์—ฌ ํ•˜๋‚˜์˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ตฌ์„ฑ โ†’ ์ด๋Ÿฌํ•œ ์ปดํฌ๋„ŒํŠธ๋“ค์ด ๋ชจ์—ฌ ์ „์ฒด ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ฆ
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ•จ์ˆ˜์™€ ๊ฐœ๋…์ ์œผ๋กœ ์œ ์‚ฌ
    • ์†์„ฑ(Props) ์„ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„ React ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋ฐ˜ํ™˜

๐ŸŽฏ Props (Properties)๋ž€?

๐Ÿ”น Props์˜ ๊ฐœ๋…

  • ์ปดํฌ๋„ŒํŠธ์˜ ์†์„ฑ์„ ์˜๋ฏธ
  • ์ปดํฌ๋„ŒํŠธ์— ์ „๋‹ฌํ•  ๋‹ค์–‘ํ•œ ์ •๋ณด๋ฅผ ๋‹ด์€ JavaScript ๊ฐ์ฒด

๐Ÿš€ Props์˜ ํŠน์ง•

  • ์ฝ๊ธฐ ์ „์šฉ (Immutable) โ†’ Props ๊ฐ’์€ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Œ
  • ๊ฐ™์€ Props๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ํ•ญ์ƒ ๊ฐ™์€ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•จ

๐Ÿ”น Props ์‚ฌ์šฉ๋ฒ•

  • JSX ์‚ฌ์šฉ ์‹œ โ†’ ํ‚ค-๊ฐ’ ์Œ ํ˜•ํƒœ๋กœ ์ปดํฌ๋„ŒํŠธ์— ์ „๋‹ฌ
  • ๋ฌธ์ž์—ด ์™ธ์˜ ๊ฐ’(์ •์ˆ˜, ๋ณ€์ˆ˜, ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ ๋“ฑ) โ†’ {}(์ค‘๊ด„ํ˜ธ)๋กœ ๊ฐ์‹ธ์„œ ์ „๋‹ฌ
  • JSX ๋ฏธ์‚ฌ์šฉ ์‹œ โ†’ createElement() ํ•จ์ˆ˜์˜ ๋‘ ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ Props ๊ฐ์ฒด ์ „๋‹ฌ

โš›๏ธ React ์ปดํฌ๋„ŒํŠธ ๋งŒ๋“ค๊ธฐ ์ •๋ฆฌ

โœ… ์ปดํฌ๋„ŒํŠธ์˜ ์ข…๋ฅ˜

  • ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ โ†’ ํ•จ์ˆ˜ ํ˜•ํƒœ๋กœ ๋œ ์ปดํฌ๋„ŒํŠธ
  • ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ โ†’ ES6์˜ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งŒ๋“  ์ปดํฌ๋„ŒํŠธ

๐Ÿ”น ์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„ ์ง“๊ธฐ

  • ํ•ญ์ƒ ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•จ
  • ์†Œ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๋ฉด DOM ํƒœ๊ทธ๋กœ ์ธ์‹๋จ

๐ŸŽฏ ์ปดํฌ๋„ŒํŠธ ๋ Œ๋”๋ง

  • ์ปดํฌ๋„ŒํŠธ๋กœ๋ถ€ํ„ฐ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์ƒ์„ฑ โ†’ React DOM์— ์ „๋‹ฌํ•˜์—ฌ ํ™”๋ฉด์— ํ‘œ์‹œ

๐Ÿš€ ์ปดํฌ๋„ŒํŠธ ํ™œ์šฉ๋ฒ•

  • ์ปดํฌ๋„ŒํŠธ ํ•ฉ์„ฑ โ†’ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ํ•˜๋‚˜์˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ฆ
  • ์ปดํฌ๋„ŒํŠธ ์ถ”์ถœ โ†’ ํฐ ์ปดํฌ๋„ŒํŠธ์—์„œ ์ผ๋ถ€ ๊ธฐ๋Šฅ์„ ๋ถ„๋ฆฌํ•˜์—ฌ ์ƒˆ๋กœ์šด ์ปดํฌ๋„ŒํŠธ๋กœ ๋งŒ๋“ฆ
    • ๊ธฐ๋Šฅ ๋‹จ์œ„๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋„๋ก ์ถ”์ถœํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ
728x90
๋ฐ˜์‘ํ˜•