๐Ÿ”ฅ Develop/React

[React] ๋™์  ์ปดํฌ๋„ŒํŠธ ๋ Œ๋”๋ง

์œค๋„๊ธฐ 2024. 9. 24. 09:46
๋ฐ˜์‘ํ˜•

 

React ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๋‹ค ๋ณด๋ฉด ๋•Œ๋•Œ๋กœ ์ปดํฌ๋„ŒํŠธ์˜ ์ผ๋ถ€๋ฅผ ๋™์ ์œผ๋กœ ๊ฒฐ์ •ํ•ด์•ผ ํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ React์—์„œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋™์ ์œผ๋กœ ๋ Œ๋”๋งํ•˜๋Š” ๊ฐ•๋ ฅํ•œ ํŒจํ„ด์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

๋™์  ์ปดํฌ๋„ŒํŠธ ๋ Œ๋”๋ง์ด ํ•„์š”ํ•œ ์ด์œ 

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์—ฌ๋Ÿฌ ๋ถ€๋ถ„์—์„œ ์žฌ์‚ฌ์šฉ๋˜๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค ๋•Œ, ๋•Œ๋กœ๋Š” ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ์˜ ์ผ๋ถ€ ์š”์†Œ๋ฅผ ์‚ฌ์šฉ context์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ๋ Œ๋”๋งํ•˜๊ณ  ์‹ถ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Tabs ์ปดํฌ๋„ŒํŠธ์—์„œ ํƒญ ๋ฒ„ํŠผ๋“ค์„ ๊ฐ์‹ธ๋Š” ์ปจํ…Œ์ด๋„ˆ ์š”์†Œ๋ฅผ ๋™์ ์œผ๋กœ ๊ฒฐ์ •ํ•˜๊ณ  ์‹ถ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ด…์‹œ๋‹ค.

 

์ด๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ํ•ต์‹ฌ ์•„์ด๋””์–ด๋Š” ์ปดํฌ๋„ŒํŠธ ์‹๋ณ„์ž๋ฅผ prop์œผ๋กœ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

function Tabs({ buttonsContainer: ButtonsContainer = 'menu', ...props }) {
  return (
    <div>
      <ButtonsContainer>
        {/* ํƒญ ๋ฒ„ํŠผ๋“ค */}
      </ButtonsContainer>
      {/* ํƒญ ๋‚ด์šฉ */}
    </div>
  );
}

// ๋˜๋Š”
function Tabs({ buttonsContainer = 'menu', ...props }) {
  const ButtonsContainer = buttonsContainer;
  return (
    <div>
      <ButtonsContainer>
        {/* ํƒญ ๋ฒ„ํŠผ๋“ค */}
      </ButtonsContainer>
      {/* ํƒญ ๋‚ด์šฉ */}
    </div>
  );
}

โš ๏ธ ๋™์ ์œผ๋กœ ๋ Œ๋”๋งํ•  ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ฐ›๋Š” prop ์ด๋ฆ„์€ ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด React๋Š” ์ด๋ฅผ ๋‚ด์žฅ HTML ์š”์†Œ๋กœ ์ทจ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค.

 

์ด์ œ Tabs ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ปจํ…Œ์ด๋„ˆ ์š”์†Œ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

<Tabs buttonsContainer="menu" />
// ๋˜๋Š”
<Tabs buttonsContainer="div" />
// ๋˜๋Š” ์ปค์Šคํ…€ ์ปดํฌ๋„ŒํŠธ ์‚ฌ์šฉ
<Tabs buttonsContainer={Section} />

โš ๏ธ ๋‚ด์žฅ ์š”์†Œ vs ์ปค์Šคํ…€ ์ปดํฌ๋„ŒํŠธ: ๋‚ด์žฅ HTML ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๋ฌธ์ž์—ด๋กœ ์ „๋‹ฌํ•˜๊ณ , ์ปค์Šคํ…€ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ์ค‘๊ด„ํ˜ธ {} ์•ˆ์— ์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„์„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•