[React] ๋์ ์ปดํฌ๋ํธ ๋ ๋๋ง
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 ์์๋ฅผ ์ฌ์ฉํ ๋๋ ๋ฌธ์์ด๋ก ์ ๋ฌํ๊ณ , ์ปค์คํ
์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ ๋๋ ์ค๊ดํธ {}
์์ ์ปดํฌ๋ํธ ์ด๋ฆ์ ์ ๋ฌํฉ๋๋ค.