❓🤔클래스형 컴포넌트에서 props를 사용할 때는?
👉 render 함수에서 this.props를 조회한다. defaultProps와 propTypes는 똑같은 방식으로 설정할 수 있다.
// Component를 클래스형 컴포넌트로 변환
import React, { Component } from 'react';
import PropTypes from 'prop-types';
class MyComponent extends Component {
render() {
const { name, favoriteNumber, children } = this.props; // 비구조화 할당
return (
<div>
안녕하세요, 제 이름은 {name}입니다. <br />
children 값은 {children}
입니다.
<br />
제가 좋아하는 숫자는 {favoriteNumber}입니다.
</div>
);
}
}
MyComponent.defaultProps = {
name: '기본 이름'
};
MyComponent.propTypes = {
name: PropTypes.string,
favoriteNumber: PropTypes.number.isRequired
};
export default MyComponent;
// 클래스형 컴포넌트에서 defaultProps와 propTypes를 설정할 때 class 내부에서 지정하는 방법
import React, { Component } from 'react';
import PropTypes from 'prop-types';
class MyComponent extends Component {
static defaultProps = {
name: '기본 이름'
};
static propTypes = {
name: PropTypes.string,
favoriteNumber: PropTypes.number.isRequired
};
render() {
const { name, favoriteNumber, children } = this.props; // 비구조화 할당
return (...);
}
}
export default MyComponent;
(+) defaultProps와 propTypes는 꼭 사용해야 할까?
필수 사항이 아니므로 꼭 사용할 필요는 없으나 React를 사용하여 큰 규모의 프로젝트를 진행할 경우, 협업할 경우 컴포넌트에 어떤 props가 필요한지 쉽게 알 수 있어 개발 능률이 높아지게 된다.
(+) 💣 트러블이슈
잘못된 임포트가 사용되고 있었다... 저장할 때 자동으로 임포트된 걸까? 아마 이전에는 계속 함수평 컴포넌트를 쓰다가 클래스형 컴포넌트 예제 따라하면서 그렇게 된 것 같다.

MyComponent를 클래스형 컴포넌트로 정의할 때 React.Component를 상속받지 않아서 생긴 경고...
👉 해결 방법
Component를 사용하려면 React.Component로 명시적으로 지정해야 한다. Component를 사용해야 클래스형 컴포넌트를 정의할 수 있음!
import React, { Children } from 'react';
// 위에 임포트 제거하고 아래와 같이 수정!
import React, { Component } from 'react';
임포트 수정하고 다시 실행하면.... 잘 나옴!
