๐ŸŽฏ[Detail] Component

cheonbiยท2024๋…„ 12์›” 8์ผ
0

React

๋ชฉ๋ก ๋ณด๊ธฐ
4/11

https://ko.react.dev/learn/your-first-component

1. ์ปดํฌ๋„ŒํŠธ ์ •์˜ํ•˜๊ธฐ

  1. ๊ธฐ์กด์—๋Š” ์›น ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค ๋•Œ ์›น ๊ฐœ๋ฐœ์ž๊ฐ€ ์ปจํ…์ธ ๋ฅผ ๋งˆํฌ์—…ํ•œ ๋‹ค์Œ
  2. JavaScript๋ฅผ ๋ฟŒ๋ ค ์ƒํ˜ธ์ž‘์šฉ์„ ์ถ”๊ฐ€

โฉ ์›น์—์„œ ์ƒํ˜ธ์ž‘์šฉ์ด ์ค‘์š”ํ–ˆ๋˜ ์‹œ์ ˆ์— ํšจ๊ณผ์ 

  • ์ด์ œ๋Š” ๋งŽ์€ ์‚ฌ์ดํŠธ์™€ ๋ชจ๋“  ์•ฑ์—์„œ ์ƒํ˜ธ์ž‘์šฉ์„ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค
  • React๋Š” ๋™์ผํ•œ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ๋„ ์ƒํ˜ธ์ž‘์šฉ์„ ์šฐ์„ ์‹œ

React ์ปดํฌ๋„ŒํŠธ๋Š” ๋งˆํฌ์—…์œผ๋กœ ๋ฟŒ๋ฆด ์ˆ˜ ์žˆ๋Š” JavaScript ํ•จ์ˆ˜

export default function Profile() {
  return (
    <img
      src="https://i.imgur.com/MK3eW3Am.jpg"
      alt="Katherine Johnson"
    />
  )
}

2. ์ปดํฌ๋„ŒํŠธ ๋นŒ๋“œ

  1. ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ณด๋‚ด๊ธฐ
  • export default ์ ‘๋‘์‚ฌ๋Š” ํ‘œ์ค€ JavaScript ๊ตฌ๋ฌธ
  • ์ด ์ ‘๋‘์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‚˜์ค‘์— ๋‹ค๋ฅธ ํŒŒ์ผ์—์„œ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ํŒŒ์ผ์— ์ฃผ์š” ๊ธฐ๋Šฅ์„ ํ‘œ์‹œ ๊ฐ€๋Šฅ
  1. ๋‚ด๋ณด๋‚ผ ํ•จ์ˆ˜ ์ •์˜
    React ์ปดํฌ๋„ŒํŠธ๋Š” ์ผ๋ฐ˜ JavaScript ํ•จ์ˆ˜์ด์ง€๋งŒ, ์ด๋ฆ„์€ ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•จ

  2. ๋งˆํฌ์—… ์ถ”๊ฐ€

return <img src="https://i.imgur.com/MK3eW3As.jpg" alt="Katherine Johnson" />;
return (
  <div>
    <img src="https://i.imgur.com/MK3eW3As.jpg" alt="Katherine Johnson" />
  </div>
);
  • ์ด ์ปดํฌ๋„ŒํŠธ๋Š” src ๋ฐ alt ์†์„ฑ์„ ๊ฐ€์ง„ <img /> ํƒœ๊ทธ๋ฅผ ๋ฐ˜ํ™˜
  • <img />๋Š” HTML์ฒ˜๋Ÿผ ์ž‘์„ฑ๋˜์—ˆ์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” JavaScript
  • ์ด ๊ตฌ๋ฌธ์„ JSX๋ผ๊ณ  ํ•˜๋ฉฐ, JavaScript ์•ˆ์— ๋งˆํฌ์—…์„ ์‚ฝ์ž…
  • ๋ฐ˜ํ™˜๋ฌธ์€ ์ด ์ปดํฌ๋„ŒํŠธ์—์„œ์ฒ˜๋Ÿผ ํ•œ ์ค„์— ๋ชจ๋‘ ์ž‘์„ฑ ๊ฐ€๋Šฅ
  • ๊ทธ๋Ÿฌ๋‚˜ ๋งˆํฌ์—…์ด ๋ชจ๋‘ return ํ‚ค์›Œ๋“œ์™€ ๊ฐ™์€ ๋ผ์ธ์— ์žˆ์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ด„ํ˜ธ๋กœ ๋ฌถ์–ด ์ž‘์„ฑ
  • ๊ด„ํ˜ธ๊ฐ€ ์—†์œผ๋ฉด return ๋’ท ๋ผ์ธ์— ์žˆ๋Š” ๋ชจ๋“  ์ฝ”๋“œ๊ฐ€ ๋ฌด์‹œ๋จ

3. ์˜ˆ์‹œ

function Profile() {
  return (
    <img
      src="https://i.imgur.com/MK3eW3As.jpg"
      alt="Katherine Johnson"
    />
  );
}

export default function Gallery() {
  return (
    <section>
      <h1>Amazing scientists</h1>
      <Profile />
      <Profile />
      <Profile />
    </section>
  );
}

๋ธŒ๋ผ์šฐ์ €์— ํ‘œ์‹œ๋˜๋Š” ๋‚ด์šฉ

๋Œ€์†Œ๋ฌธ์ž ์ฐจ์ด์— ์ฃผ๋ชฉ

  • <section>์€ ์†Œ๋ฌธ์ž์ด๋ฏ€๋กœ React๋Š” HTMLํƒœ๊ทธ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค๊ณ  ์ปดํŒŒ์ผ
  • <Profile />์€ ๋Œ€๋ฌธ์ž p๋กœ ์‹œ์ž‘ํ•˜๋ฏ€๋กœ React๋Š” Profile์ด๋ผ๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•œ๋‹ค๊ณ  ์ปดํŒŒ์ผ
  • Profile์€ ๋” ๋งŽ์€ <img />๊ฐ€ ํฌํ•จ

๋ธŒ๋ผ์šฐ์ €์— ํ‘œ์‹œ๋˜๋Š” ๋‚ด์šฉ

<section>
  <h1>Amazing scientists</h1>
  <img src="https://i.imgur.com/MK3eW3As.jpg" alt="Katherine Johnson" />
  <img src="https://i.imgur.com/MK3eW3As.jpg" alt="Katherine Johnson" />
  <img src="https://i.imgur.com/MK3eW3As.jpg" alt="Katherine Johnson" />
</section>

4. ์ปดํฌ๋„ŒํŠธ ์ค‘์ฒฉ ๋ฐ ๊ตฌ์„ฑ

  • ์ปดํฌ๋„ŒํŠธ๋Š” ์ผ๋ฐ˜ JavaScriptํ•จ์ˆ˜์ด๋ฏ€๋กœ ๊ฐ™์€ ํŒŒ์ผ์— ์—ฌ๋Ÿฌ ์ปดํฌ๋„ŒํŠธ๋ฅผ ํฌํ•จ ๊ฐ€๋Šฅ
  • ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ ์ž‘๊ฑฐ๋‚˜ ์„œ๋กœ ๋ฐ€์ ‘ํ•˜๊ฒŒ ๊ด€๋ จ๋˜์–ด ์žˆ์„ ๋•Œ ํŽธ๋ฆฌ
  • Profile ์ปดํฌ๋„ŒํŠธ๋Š” Gallery ์•ˆ์—์„œ ์—ฌ๋Ÿฌ๋ฒˆ ๋ Œ๋”๋ง
    โฉ Gallery๋Š” ๊ฐ Profil์„ โ€œ์ž์‹โ€์œผ๋กœ ๋ Œ๋”๋งํ•˜๋Š” "๋ถ€๋ชจ" ์ปดํฌ๋„ŒํŠธ
    โฉ ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ•œ ๋ฒˆ ์ •์˜ํ•œ ๋‹ค์Œ ์›ํ•˜๋Š” ๊ณณ์—์„œ ์›ํ•˜๋Š” ๋งŒํผ ์—ฌ๋Ÿฌ ๋ฒˆ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ 

โ— ์ปดํฌ๋„ŒํŠธ๋Š” ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ Œ๋”๋งํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ทธ ์ •์˜๋ฅผ ์ค‘์ฒฉํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. โ—
์ตœ์ƒ์œ„ ๋ ˆ๋ฒจ์—์„œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ •์˜
์ž์‹ ์ปดํฌ๋„ŒํŠธ์— ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์˜ ์ผ๋ถ€ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ props๋กœ ์ „๋‹ฌ

export default function Gallery() {
  // ๐Ÿ”ด ์ ˆ๋Œ€ ์ปดํฌ๋„ŒํŠธ ์•ˆ์— ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ •์˜ํ•˜๋ฉด ์•ˆ ๋จ
  function Profile() {
    // ...
  }
  // ...
}
export default function Gallery() {
  // ...
}

// โœ… ์ตœ์ƒ์œ„ ๋ ˆ๋ฒจ์—์„œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์„ ์–ธ
function Profile() {
  // ...
}

5. More Details

  • React ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ root ์ปดํฌ๋„ŒํŠธ์—์„œ ์‹œ์ž‘

  • ๋ณดํ†ต ์ƒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ์ž๋™์œผ๋กœ ์ƒ์„ฑ

  • Next.js๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, root ์ปดํฌ๋„ŒํŠธ๋Š” pages/index.js์— ์ •์˜

  • React ์•ฑ์€ ๋ชจ๋“  ๋ถ€๋ถ„์—์„œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉ

  • ๋ฒ„ํŠผ๊ณผ ๊ฐ™์ด ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ถ€๋ถ„๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์‚ฌ์ด๋“œ๋ฐ”, ๋ชฉ๋ก ๋“ฑ๋“ฑ...

  • ๊ถ๊ทน์ ์œผ๋กœ ์ „์ฒด ํŽ˜์ด์ง€์™€ ๊ฐ™์€ ํฐ ๋ถ€๋ถ„์—๋„ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉ

  • ์ปดํฌ๋„ŒํŠธ๋Š” ํ•œ ๋ฒˆ๋งŒ ์‚ฌ์šฉ๋˜๋”๋ผ๋„ UI ์ฝ”๋“œ์™€ ๋งˆํฌ์—…์„ ์ •๋ฆฌํ•˜๋Š” ํŽธ๋ฆฌํ•œ ๋ฐฉ๋ฒ•

6. Summary

  • React๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•ฑ์˜ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ UI ์š”์†Œ์ธ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

  • React ์•ฑ์—์„œ ๋ชจ๋“  UI๋Š” ์ปดํฌ๋„ŒํŠธ์ž…๋‹ˆ๋‹ค.

  • React ์ปดํฌ๋„ŒํŠธ๋Š” ๋‹ค์Œ ๋ช‡ ๊ฐ€์ง€๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ์ผ๋ฐ˜์ ์ธ JavaScript ํ•จ์ˆ˜์ด๋‹ค.
    1. ์ปดํฌ๋„ŒํŠธ์˜ ์ด๋ฆ„์€ ํ•ญ์ƒ ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘
    2. JSX ๋งˆํฌ์—…์„ ๋ฐ˜ํ™˜

profile
เผผ ใค โ—•_โ—• เผฝใค

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