propType를 지정할 때 뒤에 isRequired를 붙여주면 console창에 경고 메시지를 띄워준다.
import PropTypes from 'prop-types';
const MyComponent = ({name, favoriteNumber, children}) => {
return (
<div>
안녕하세요, 제 이름은 {name}입니다. <br/>
children 값은 {children}
입니다.
<br />
제가 좋아하는 숫자는 {favoriteNumber}입니다.
</div>
);
};
MyComponent.propTypes = {
name: '기본 이름'
};
MyComponent.propTypes = {
name: PropTypes.string,
favoriteNumber: PropTypes.number.isRequired
};
export default MyComponent;
클래스형 컴포넌트에서 props를 사용할 때는 render함수에서 this.props를 조회하면 된다.
defaultProps와 propTypes는 똑같은 방식으로 설정할 수 있다.
import {Component} from 'react';
import PropTypes from 'prop-types';
class MyComponent extends Componenet {
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 {Component} from 'react';
import PropTypes from 'prop-types';
class MyComponent extends Componenet {
static defaultProps = {
name: '기본 이름'
};
static propTypes = {
name: PropTypes.string,
favoriteNumber: PropTypes.number.isRequired
};
render() {
const{name, favoriteNumber, children} = this.props; // 비구조화 할당
return(...);
}
}
export default MyComponent;
컴포넌트에서 state를 설정할 때 constructor메서드를 작성하여 설정한다.
constructor(props){
super(props);
// state의 초깃값 설정하기
this.state = {
number:0
};
}
render() {
const{number} = this.state;
return (
<div>
<h1>{number}</h1>
<button
onClick={() => {
this.setState({number: number+1});
}}
>
+1
</button>
</div>
);
import Counter from './Counter';
const App = () => {
return <Counter />;
};
export default App;
브라우저에서 다음과 같이 숫자와 버튼이 나타나고 버튼을 누르면 숫자가 1씩 올라간다.