[React] ๐Ÿ“– Component

์ž„์ง€์„ ยท2023๋…„ 8์›” 24์ผ
post-thumbnail

โ“ ์ปดํฌ๋„ŒํŠธ(Component)

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


โ“ ์ปดํฌ๋„ŒํŠธ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•

๐Ÿš€ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ

function Welcome(props) {
  return <h1>Hello, {props.name}</h1>;
}
const Welcome = (props) => {
  return <h1>Hello, {props.name}</h1>;
}

๐Ÿš€ ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ

class Welcome extends React.Component {
  render() {
    return <h1>Hello, {this.props.name}</h1>;
  }
}

์ฐธ๊ณ  ์ž๋ฃŒ : https://ko.legacy.reactjs.org/docs/components-and-props.html


โ“ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ VS ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ

๐Ÿš€ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ

  • hook์„ ํ†ตํ•ด ๋ผ์ดํ”„ ์‚ฌ์ดํด ๊ธฐ๋Šฅ๊ณผ state ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์ด ๊ตฌํ˜„๋œ๋‹ค.
  • ์„ ์–ธํ•˜๊ธฐ ํŽธํ•˜๋‹ค.
  • ๋ฉ”๋ชจ๋ฆฌ ์ž์›์„ ๋œ ์‚ฌ์šฉํ•œ๋‹ค.
  • react ๊ณต์‹๋ฌธ์„œ์—์„œ ์ถ”์ฒœํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

๐Ÿš€ ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ

  • ๋ผ์ดํ”„ ์‚ฌ์ดํด ๊ธฐ๋Šฅ๊ณผ state ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์ด ์ฝ”๋“œ์— ๊ตฌํ˜„๋œ๋‹ค.
  • class ํ‚ค์›Œ๋“œ๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ, Component๋กœ ์ƒ์†์„ ๋ฐ›์•„์•ผ ํ•œ๋‹ค.
  • render() ๋ฉ”์†Œ๋“œ๊ฐ€ ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•˜๋‹ค.
  • ์ž„์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

โ“ ์ปดํฌ๋„ŒํŠธ ์žฅ์ 

React์—์„œ๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ธฐ๋ณธ ๋‹จ์œ„๋กœ ์‚ฌ์šฉํ•˜์—ฌ ์˜์กด์„ฑ์ด ๋‚ฎ๊ณ  ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ๋ฒ”์šฉ์„ฑ์„ ๋†’์ธ ์ฝ”๋“œ๋ฅผ ์ง€ํ–ฅํ•œ๋‹ค.
๋”ฐ๋ผ์„œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ๋ฒ”์šฉ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.


โ“ ์ปดํฌ๋„ŒํŠธ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•

๐Ÿš€ ๊ด€์‹ฌ์‚ฌ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ  ๋‹จ์ผ ์ฑ…์ž„์œผ๋กœ ์„ค๊ณ„ํ•˜๊ธฐ

  • ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ๋ฒ”์šฉ์„ฑ์„ ์ง€๋‹ˆ๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ด€์‹ฌ์‚ฌ์— ๋”ฐ๋ผ ํ•œ ๊ฐ€์ง€์˜ ์—ญํ• ๋งŒ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•œ๋‹ค.(์ด๋ฅผ ๊ฐ์ฒด์ง€ํ–ฅ์—์„œ๋Š” ๋‹จ์ผ ์ฑ…์ž„ ์œˆ์น™์ด๋ผ ํ•จ)
  • ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํ•œ ๊ฐ€์ง€ ์—ญํ• ๋งŒ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋™์ผํ•œ props๋ฅผ ๋ฐ›์œผ๋ฉด ๋™์ผํ•œ JSX๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ์ˆœ์ˆ˜ํ•จ์ˆ˜๋กœ ์ด๋ค„์ ธ์•ผ ํ•œ๋‹ค.
  • ์ด๋Ÿฌํ•œ ๋‹จ์ผ ์ฑ…์ž„์„ ๊ฐ€์ง€๋Š” ์ˆœ์ˆ˜ ์ปดํฌ๋„ŒํŠธ๋“ค์€ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์ข‹๊ณ , ๊ฐ€๋…์„ฑ๋„ ์ข‹๋‹ค.

๐Ÿš€ ์ œ์–ด ์œ„์ž„ํ•˜๊ธฐ

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

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