Component

ํ•™์Šต ํ‚ค์›Œ๋“œ

  • Component

    • ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ์™€ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ

    • ์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑ ๊ทœ์น™

    • JSX

    • Props์˜ ํ™œ์šฉ๋ฒ•

Component

๋ฆฌ์•กํŠธ๋Š” ์›น์˜ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ๊ฐ€์žฅ ์ž‘์€ ๋‹จ์œ„๋กœ ์ธ ์ปดํฌ๋„ŒํŠธ๋กœ ๊ตฌ์„ฑํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์กฐํ•ฉํ•ด์„œ ํ•˜๋‚˜์˜ ํŽ˜์ด์ง€๋กœ ์ƒ์„ฑํ•˜๊ณ , ๋ฐ˜๋ณต์ ์ธ ์›น์˜ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์žฌ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ ์™€ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ

๋ฆฌ์•กํŠธ๋Š” ํด๋ž˜ํ˜•๊ณผ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ ๋‘๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‘๊ฐ€์ง€ ๋ฐฉ์‹ ๋ชจ๋‘ ์ง€์›ํ•˜๊ณ  ์žˆ์ง€๋งŒ, ๊ณต์‹์ ์œผ๋กœ๋Š” ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ ๋ฐฉ์‹์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๊ฑธ ๊ถŒ์žฅํ•œ๋‹ค. ๋ฆฌ์•กํŠธ 16.8๋ฒ„์ „์— ์ถ”๊ฐ€๋œ ๋ฆฌ์•กํŠธ ํ›…์œผ๋กœ ์ธํ•ด ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์˜ ์‚ฌ์šฉ์„ฑ์ด ๊ฐœ์„ ๋˜์–ด ๋”์ด์ƒ ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฑด ๋น„ํšจ์œจ์ ์ด๋‹ค.

์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑ ๊ทœ์น™

  • ์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑ์‹œ ์ด๋ฆ„์€ ํ•ญ์ƒ ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•œ๋‹ค.

export default function App() {}
  • ํ™”์‚ดํ‘œํ˜„์‹, ํ•จ์ˆ˜์„ ์–ธ์‹ ๋‘˜๋‹ค ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

export default function App() {}
const App = () => {};

export default App; //ํ•จ์ˆ˜ ํ‘œํ˜„์‹์œผ๋กœ ์‚ฌ์šฉ์‹œ ํ•ด๋‹น ๋ฐฉ๋ฒ•์œผ๋กœ ๋‚ด๋ณด๋‚ด์•ผ ํ•œ๋‹ค.

JSX

  • Javascript + XML

๋ฐ˜๋“œ์‹œ ์ตœ์ƒ์œ„ ๋ฃจํŠธ ํƒœ๊ทธ๊ฐ€ ์กด์žฌํ•ด์•ผ ํ•œ๋‹ค

export default function App() {
  return (
    <>
      <div>1</div>
      <div>2</div>
    </>
  );
}

<></> === <React.Fragment></React.Fragment> ๋ฆฌ์•กํŠธ์—์„œ ์ œ๊ณตํ•˜๋Š” Fragment

์—ฌ๋Ÿฌ์ค„์˜ ์ฝ”๋“œ๋ฅผ return ํ•  ๊ฒฝ์šฐ () ์†Œ๊ด„ํ˜ธ ์‚ฌ์šฉ

export default function App() {
  return (
    // ๐Ÿ‘ˆ๐Ÿป
    <>
      <div>๋ฆฌ์•กํŠธ</div>
      <div>๋ฆฌ์•กํŠธ2</div>
    </>
  );
}

๋ฐ›๋“œ์‹œ ํƒœ๊ทธ๋Š” ๋‹ซ์•„์ค€๋‹ค

import Button from './components/Button';

export default function App() {
  return (
    <>
      <Button />
      <Button></Button>
    </>
  );
}

ํ‘œํ˜„์‹์€ {} ์‚ฌ์šฉํ•œ๋‹ค

  • ๊ฐ์ฒด,๋ฐฐ์—ด,Boolean ์ค‘๊ด„ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹ ๋ถˆ๊ฐ€๋Šฅ

export default function Button() {
  const text = '๋ฒ„ํŠผ์ž…๋‹ˆ๋‹ค!';
  return <div>{text}</div>;
}

Props์˜ ํ™œ์šฉ๋ฒ•

1. ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ตฌ์กฐ๋ถ„ํ•ดํ• ๋‹น

  • โญ๏ธ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹

export default function PropsButton({
  type,
  name,
  disabled,
  children,
}: TButtonProps) {
  return (
    <button type={type} name={name} disabled={disabled}>
      {children}
    </button>
  );
}

2. ์ปดํฌ๋„ŒํŠธ ๋‚ด์—์„œ props์˜ ๊ตฌ์กฐ๋ถ„ํ•ดํ• ๋‹น

export default function PropsButton(props: TButtonProps) {
  const { type, disabled, children } = props;
  return (
    <button type={type} disabled={disabled}>
      {children}
    </button>
  );
}

3.๋‚˜๋จธ์ง€ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํ™œ์šฉํ•œ ๊ตฌ์กฐ๋ถ„ํ•ดํ• ๋‹น

type TButtonProps = React.ComponentProps<'button'> & {
  children: ReactNode,
};

export default function PropsButton(props: TButtonProps) {
  const { children, ...restButtonProps } = props;
  return <button {...restButtonProps}>{children}</button>;
}

Last updated