[ERR] propType {name} is not required, but has no corresponding defaultprops declaration
ERR
propType "msg" is not required, but has no corresponding defaultProps declaration
WHEN
- 모달 컴포넌트를 작성하는 중에 표시되는 메시지를 props 로 전달받고자 했고, 해당 props 를 선택적으로 입력 할 수 있게 해당
props
를 타입을 작성했다.
interface IProps {
msg?: string;
applyFn: () => void;
dismissFn: () => void;
}
WHY
- 에러메세지를 확인해보니, 해당 props 는 필수적인 props 가 아님에도, 그에 상응하는 기본 props 가 선언되어 있지 않아 생기는 문제였다.
- 즉, props 전달이 되지 않으면 표시할 데이터가 없기 때문.
SOLVE
- 해당 컴포넌트의
defaultProps
를 지정해 주는 것으로 해결 할 수 있었다.
TwoBtnModal.defaultProps = {
msg: '메시지를 입력하세요.',
};
- 혹은, 기본 props 를 지정하고 싶지 않다면 eslint 규칙을 아래와 같이 설정하여 에러를 피할 수 있다고 한다.
"rules": {
"react/require-default-props": "off"
}
+
참고
https://stackoverflow.com/questions/64012257/proptype-name-is-not-required-but-has-no-corresponding-defaultprops-declarati