[๐ŸŽ์ฝ”๋”ฉ์• ํ”Œ ๊ฐ•์˜์š”์•ฝ]React ์ปดํฌ๋„ŒํŠธ(Component) ๊ธฐ์ดˆ ๐Ÿงฉ

๐ŸŒˆ KJยท2025๋…„ 5์›” 9์ผ

codingapple

๋ชฉ๋ก ๋ณด๊ธฐ
6/23
post-thumbnail

๊ฐœ์š” ๐Ÿ“‹

์ด ๊ฐ•์˜๋Š” React์—์„œ ๋ณต์žกํ•œ HTML ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋‹จ์œ„๋กœ ๋งŒ๋“œ๋Š” ์ปดํฌ๋„ŒํŠธ(Component) ๋ฌธ๋ฒ•์— ๋Œ€ํ•ด ๋‹ค๋ฃน๋‹ˆ๋‹ค. ๋ชจ๋‹ฌ์ฐฝ UI๋ฅผ ์˜ˆ์ œ๋กœ ์ปดํฌ๋„ŒํŠธ์˜ ๊ฐœ๋…๊ณผ ํ™œ์šฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ณธ ๊ฐœ๋… ๐Ÿ”

๋ชจ๋‹ฌ์ฐฝ UI ๋งŒ๋“ค๊ธฐ ๐Ÿ–ผ๏ธ

// HTML ๊ตฌ์กฐ
<div className="modal">
  <h4>์ œ๋ชฉ</h4>
  <p>๋‚ ์งœ</p>
  <p>์ƒ์„ธ๋‚ด์šฉ</p>
</div>

// CSS ์Šคํƒ€์ผ
.modal {
  margin-top: 20px;
  padding: 20px;
  background: #eee;
  text-align: left;
}

JSX ์ž‘์„ฑ ์‹œ ์ฃผ์˜์‚ฌํ•ญ โš ๏ธ

  • return() ๋‚ด๋ถ€์—๋Š” ํ•˜๋‚˜์˜ ์ตœ์ƒ์œ„ ํƒœ๊ทธ๋งŒ ์กด์žฌํ•ด์•ผ ํ•จ
  • ์—ฌ๋Ÿฌ ์š”์†Œ๋ฅผ ๋‚˜๋ž€ํžˆ ๋ฐฐ์น˜ํ•˜๋ ค๋ฉด ํ•˜๋‚˜์˜ ๋ถ€๋ชจ ์š”์†Œ๋กœ ๊ฐ์‹ธ์•ผ ํ•จ
  • ์˜๋ฏธ ์—†๋Š” div ์‚ฌ์šฉ์„ ํ”ผํ•˜๋ ค๋ฉด Fragment(<> </>) ์‚ฌ์šฉ ๊ฐ€๋Šฅ

์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑ ๋ฐฉ๋ฒ• ๐Ÿ› ๏ธ

// App ์ปดํฌ๋„ŒํŠธ
function App() {
  return (
    <div>
      {/* ๋‹ค๋ฅธ ๋‚ด์šฉ๋“ค */}
      <Modal></Modal>
    </div>
  )
}

// Modal ์ปดํฌ๋„ŒํŠธ
function Modal() {
  return (
    <div className="modal">
      <h4>์ œ๋ชฉ</h4>
      <p>๋‚ ์งœ</p>
      <p>์ƒ์„ธ๋‚ด์šฉ</p>
    </div>
  )
}

์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑ ๋‹จ๊ณ„ ๐Ÿ“

  1. function ํ‚ค์›Œ๋“œ๋กœ ํ•จ์ˆ˜ ์ƒ์„ฑ ๋ฐ ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ด๋ฆ„ ์ง€์ •
  2. return() ์•ˆ์— HTML ์ฝ”๋“œ ์ž‘์„ฑ
  3. ์›ํ•˜๋Š” ์œ„์น˜์— <์ปดํฌ๋„ŒํŠธ๋ช…></์ปดํฌ๋„ŒํŠธ๋ช…> ํ˜•ํƒœ๋กœ ์‚ฌ์šฉ

์ปดํฌ๋„ŒํŠธ ํ™œ์šฉ ๊ฐ€์ด๋“œ ๐Ÿ“š

์ปดํฌ๋„ŒํŠธ ์ž‘์„ฑ ์‹œ ์ฃผ์˜์‚ฌํ•ญ โš™๏ธ

  1. ์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„์€ ์˜์–ด ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘
  2. return() ์•ˆ์—๋Š” ๋ฐ˜๋“œ์‹œ ํ•˜๋‚˜์˜ ์ตœ์ƒ์œ„ ํƒœ๊ทธ๋งŒ ์‚ฌ์šฉ
  3. ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€์— ์ •์˜ํ•˜์ง€ ๋ง ๊ฒƒ
  4. <์ปดํฌ๋„ŒํŠธ></์ปดํฌ๋„ŒํŠธ> ๋˜๋Š” <์ปดํฌ๋„ŒํŠธ/> ํ˜•ํƒœ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

๋‹ค์–‘ํ•œ ํ•จ์ˆ˜ ํ‘œํ˜„์‹ ๐Ÿ”„

// ์ผ๋ฐ˜ ํ•จ์ˆ˜ ์„ ์–ธ์‹
function Modal() {
  return (<div></div>)
}

// ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ ํ‘œํ˜„์‹
let Modal = () => {
  return (<div></div>)
}

์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๐ŸŽฏ

  • ๋ฐ˜๋ณต์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” UI ์š”์†Œ
  • ์ž์ฃผ ๋ณ€๊ฒฝ๋˜๋Š” ์ฝ˜ํ…์ธ  ์˜์—ญ
  • ๋…๋ฆฝ์ ์ธ ํŽ˜์ด์ง€ ๊ตฌ์„ฑ ์š”์†Œ
  • ํŒ€ ์ž‘์—… ์‹œ ์—…๋ฌด ๋ถ„๋‹ด ๋‹จ์œ„

์ปดํฌ๋„ŒํŠธ์˜ ๋‹จ์  ๋ฐ ์ฃผ์˜์  โš ๏ธ

  • ๋„ˆ๋ฌด ๋งŽ์€ ์ปดํฌ๋„ŒํŠธ๋Š” ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ค์›€
  • ์ปดํฌ๋„ŒํŠธ ๊ฐ„ ๋ฐ์ดํ„ฐ(state) ๊ณต์œ ๊ฐ€ ๋ณต์žกํ•จ
    • ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ์˜ state๋ฅผ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ
    • props ๋ฌธ๋ฒ•์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•ด์•ผ ํ•จ
  • ์ดˆ๋ณด์ž๋Š” ๊ผญ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ์ปดํฌ๋„ŒํŠธ๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ

ํ•ต์‹ฌ ์š”์•ฝ ๐Ÿ“Œ

  • ์ปดํฌ๋„ŒํŠธ๋Š” ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ UI ์กฐ๊ฐ
  • ๋ณต์žกํ•œ HTML์„ ํ•จ์ˆ˜์ฒ˜๋Ÿผ ํ•œ ๋‹จ์–ด๋กœ ์ถ•์•ฝ ๊ฐ€๋Šฅ
  • ๊ด€๋ฆฌ์™€ ๊ฐ€๋…์„ฑ์„ ์œ„ํ•ด ์ ์ ˆํžˆ ์‚ฌ์šฉ
  • ์ปดํฌ๋„ŒํŠธ ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ณต์œ ๋Š” props๋ฅผ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง

๊ฐ•์˜ ๋‚ด์šฉ ๊ฒ€ํ†  ๐Ÿ”

Claude.ai ์—์„œ ์ œ์‹œํ•œ ๊ฐ•์˜์—์„œ ๋ณด์ถฉํ•˜๋ฉด ์ข‹์€ ๋‚ด์šฉ

  1. ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ์™€ ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ ๊ตฌ๋ถ„ ๋ˆ„๋ฝ:
    ๊ฐ•์˜์—์„œ๋Š” ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ๋งŒ ์†Œ๊ฐœํ•˜๊ณ  ์žˆ์ง€๋งŒ, React์—๋Š” ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ๋„ ์žˆ๋‹ค๋Š” ์ ์„ ์–ธ๊ธ‰ํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ตœ์‹  React์—์„œ๋Š” ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ถŒ์žฅํ•˜์ง€๋งŒ, ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ์—์„œ ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  2. React.Fragment์— ๋Œ€ํ•œ ์„ค๋ช… ๋ถ€์กฑ:
    <> </> ๋ฌธ๋ฒ•์ด Fragment๋ผ๊ณ  ๊ฐ„๋žตํžˆ ์–ธ๊ธ‰๋˜์—ˆ์ง€๋งŒ, ์ด๊ฒƒ์ด <React.Fragment> </React.Fragment>์˜ ์ถ•์•ฝํ˜•์ด๋ผ๋Š” ์„ค๋ช…๊ณผ Fragment๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ตฌ์ฒด์ ์ธ ์ด์ (DOM์— ๋ถˆํ•„์š”ํ•œ ๋…ธ๋“œ ์ถ”๊ฐ€ ๋ฐฉ์ง€)์„ ์ถ”๊ฐ€ํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  3. ์ปดํฌ๋„ŒํŠธ ๋ช…๋ช… ๊ทœ์น™ ์ถ”๊ฐ€ ์„ค๋ช… ํ•„์š”:
    ์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„์€ ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ, ์ด๋Š” React๊ฐ€ ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๋Š” JSX ํƒœ๊ทธ๋ฅผ ์ปดํฌ๋„ŒํŠธ๋กœ ์ธ์‹ํ•˜๊ณ , ์†Œ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๋Š” ํƒœ๊ทธ๋ฅผ DOM ์š”์†Œ๋กœ ์ธ์‹ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋ผ๋Š” ์ด์œ ๋ฅผ ์„ค๋ช…ํ•˜๋ฉด ๋” ๋ช…ํ™•ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  4. ์ปดํฌ๋„ŒํŠธ์˜ ์žฌ์‚ฌ์šฉ์„ฑ ๊ฐ•์กฐ ๋ถ€์กฑ:
    ์ปดํฌ๋„ŒํŠธ์˜ ๊ฐ€์žฅ ํฐ ์žฅ์  ์ค‘ ํ•˜๋‚˜๋Š” ์žฌ์‚ฌ์šฉ์„ฑ์ธ๋ฐ, ๋‹ค์–‘ํ•œ props๋ฅผ ์ „๋‹ฌํ•˜์—ฌ ๊ฐ™์€ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋‹ค์–‘ํ•œ ์ƒํ™ฉ์—์„œ ์žฌ์‚ฌ์šฉํ•˜๋Š” ์˜ˆ์‹œ๊ฐ€ ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

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