state란 컴포넌트의 상태(state) 값이다.
state와 props 모두 object이고, 화면에 보여줄 상태를 가지고 있다는 점에서 비슷한 역할을 한다. props는 컴포넌트를 사용하는 부모에서 전달해야만 사용할 수 있다. state는 컴포넌트 내에서 정의한 후에 사용한다.
아래 코드는 버튼을 눌렀을 때, state에 변화를 줘서 보여줄 텍스트를 바꾸는 코드이다.
click
이라는 하나의 state만 있지만, 여러 개의 state를 추가할 수 있다. 그리고 state의 이름은 내가 원하는대로 지을 수 있다.
class Button extends React.Component {
constructor() {
super();
this.state = {
clicked: false
}
}
}
render() {
return(
<div
className="btn"
onClick={()=>{this.setState({clicked : !this.state.clicked})}}
>
{this.state.clicked ? '좋아요' : '싫어요'}
</div>
);
}
ReactDOM.reder(
<Button />,
document.getElementById('root')
);
render() {
return(
<div
className="btn"
onClick={()=>{this.setState({ clicked : !this.state.clicked})}}
>
)
}
constructor() {
super();
this.state = {
clicked : false
}
}
Button 컴포넌트를 그리려면 this.state.clicked
의 값이 필요하다. 최초에는 값이 없기때문에 constructor
에서 값을 지정해줘야 한다. super()
라는 키워드는 반드시 써줘야 한다. 그래야 React.Component
클래스에 있는 메소드(예 render
)를 사용할 수 있다.