๐Ÿ”ฅ Trouble Shooting - React PropTypes ์ •์˜ ์‹œ ์—๋Ÿฌ ๋ฐœ์ƒ!

์Š˜ยท2025๋…„ 2์›” 4์ผ

๐Ÿ”ฅ Trouble Shooting

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

๐Ÿšจ ๋ฌธ์ œ ์ƒํ™ฉ

React ์ปดํฌ๋„ŒํŠธ์—์„œ PropTypes ์ •์˜ ์‹œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค:

PokemonCard.jsx:79 Uncaught TypeError: Cannot read properties of undefined (reading 'isRequired')

๐Ÿ’ป ๋ฌธ์ œ ๋ฐœ์ƒ ์ฝ”๋“œ

// ์ž˜๋ชป๋œ PropTypes ์ •์˜
PokemonCard.propTypes = {
  pokemon: PropTypes.Array.isRequired
}

๐Ÿค” ์›์ธ ๋ถ„์„

  1. PropTypes ์ •์˜๊ฐ€ ์ž˜๋ชป๋จ
  2. array๊ฐ€ ์•„๋‹Œ Array๋กœ ์ž‘์„ฑ๋จ (PropTypes์˜ ์˜ฌ๋ฐ”๋ฅธ ๋ฉ”์„œ๋“œ ์‚ฌ์šฉ X)
  3. ๊ฐ์ฒด ๊ตฌ์กฐ๋ฅผ ์ •ํ™•ํžˆ ๋ฐ˜์˜ํ•˜์ง€ ์•Š์Œ

โœ… ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

// ์˜ฌ๋ฐ”๋ฅธ PropTypes ์ •์˜
PokemonCard.propTypes = {
  pokemon: PropTypes.shape({
    img_url: PropTypes.string,
    korean_name: PropTypes.string,
    types: PropTypes.array,
    id: PropTypes.number,
    description: PropTypes.string
  })
}

๐ŸŽฏ ํ•ด๊ฒฐ ํฌ์ธํŠธ

  1. PropTypes.Array ๋Œ€์‹  PropTypes.shape ์‚ฌ์šฉ
  2. ๊ฐ์ฒด์˜ ๊ฐ ์†์„ฑ์— ๋Œ€ํ•œ ํƒ€์ž… ๋ช…์‹œ
  3. ํ•„์ˆ˜๊ฐ’์ด ์•„๋‹Œ ๊ฒฝ์šฐ isRequired ์ œ๊ฑฐ

๐Ÿ“ ๋ฐฐ์šด ์ 

  • PropTypes์˜ ์˜ฌ๋ฐ”๋ฅธ ์‚ฌ์šฉ๋ฒ•
  • ๊ฐ์ฒด ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ•
  • React ์ปดํฌ๋„ŒํŠธ์˜ ํƒ€์ž… ์ฒดํฌ ์ค‘์š”์„ฑ

๐Ÿ”„ ๊ฐœ์„ ๋œ ์ 

  1. ํƒ€์ž… ์—๋Ÿฌ ํ•ด๊ฒฐ
  2. ๋ช…ํ™•ํ•œ props ๊ตฌ์กฐ ์ •์˜
  3. ์ปดํฌ๋„ŒํŠธ ์•ˆ์ •์„ฑ ํ–ฅ์ƒ

๐Ÿ’ก ์ถ”๊ฐ€ TIP

// ๋ฐฐ์—ด ํƒ€์ž…์„ ์ •์˜ํ•  ๋•Œ๋Š” ์ด๋ ‡๊ฒŒ!
types: PropTypes.arrayOf(PropTypes.string)

// ํ•„์ˆ˜๊ฐ’์œผ๋กœ ์ง€์ •ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด
pokemon: PropTypes.shape({
  // ...props
}).isRequired
profile
์ฃผ๋‹ˆ์–ด ํ”„๋ก ํŠธ์—”๋“œ ์„ฑ์žฅ๊ธฐ ๊ธฐ๋ก๊ธฐ๋ก

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