๐Ÿ”ฅ Trouble Shooting - React PropTypes

์Š˜ยท2025๋…„ 1์›” 22์ผ

๐Ÿ”ฅ Trouble Shooting

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

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

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

Error: 'handleSubmit' is missing in props validation

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

// As-is
const MedalInputForm = ({ handleSubmit, children }) => {
  return (
    // ์ปดํฌ๋„ŒํŠธ ๋‚ด์šฉ
  );
};

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

  1. React์—์„œ๋Š” props์˜ ํƒ€์ž…์„ ๋ช…์‹œ์ ์œผ๋กœ ๊ฒ€์ฆํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅ
  2. PropTypes๋ฅผ ์ •์˜ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ฐœ๋ฐœ ๋ชจ๋“œ์—์„œ ๊ฒฝ๊ณ  ๋ฐœ์ƒ
  3. ์ปดํฌ๋„ŒํŠธ์˜ ์•ˆ์ •์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ ์ €ํ•˜ ์šฐ๋ ค

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

// To-be
import PropTypes from 'prop-types';

const MedalInputForm = ({ handleSubmit, children }) => {
  return (
    // ์ปดํฌ๋„ŒํŠธ ๋‚ด์šฉ
  );
};

MedalInputForm.propTypes = {
  handleSubmit: PropTypes.func.isRequired,
  children: PropTypes.node.isRequired,
};

export default MedalInputForm;

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

  1. PropTypes ํŒจํ‚ค์ง€ import
  2. ์ปดํฌ๋„ŒํŠธ์˜ propTypes ์ •์˜
  3. ๊ฐ prop์˜ ํƒ€์ž…๊ณผ ํ•„์ˆ˜ ์—ฌ๋ถ€ ์ง€์ •

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

  • React์—์„œ PropTypes์˜ ์ค‘์š”์„ฑ
  • ํƒ€์ž… ์ฒดํฌ๋ฅผ ํ†ตํ•œ ๋ฒ„๊ทธ ์˜ˆ๋ฐฉ
  • ์ปดํฌ๋„ŒํŠธ ๋ฌธ์„œํ™” ํšจ๊ณผ

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

  1. ํƒ€์ž… ์•ˆ์ •์„ฑ ํ™•๋ณด
  2. ๊ฐœ๋ฐœ ์‹œ props ์˜ค๋ฅ˜ ์ฆ‰์‹œ ๋ฐœ๊ฒฌ ๊ฐ€๋Šฅ
  3. ์ปดํฌ๋„ŒํŠธ ์ธํ„ฐํŽ˜์ด์Šค ๋ช…ํ™•ํ™”

๐Ÿ’ก ์ถ”๊ฐ€ TIP

// ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” PropTypes ์˜ˆ์‹œ
ComponentName.propTypes = {
  string: PropTypes.string,
  number: PropTypes.number,
  function: PropTypes.func,
  array: PropTypes.array,
  object: PropTypes.object,
  node: PropTypes.node,
  element: PropTypes.element,
};
profile
์ฃผ๋‹ˆ์–ด ํ”„๋ก ํŠธ์—”๋“œ ์„ฑ์žฅ๊ธฐ ๊ธฐ๋ก๊ธฐ๋ก

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