리액트를 공부 할 때 state가 왜 중요한지, 그리고 리액트를 사용하는 사람이라면 왜 알아야 하는지 궁금하였다.
state는 리액트 컴포넌트에서 변경 가능한 데이터를 관리하기 위한 객체이다.
| props | state |
|---|---|
| 부모 컴포넌트에서 자식 컴포넌트로 전달 됨 | 컴포넌트 내부에서 관리 됨 |
| 변경할 수 없음(읽기 전용) | 변경 가능(useState 또는 setState로) |
| 컴포넌트 외부에서 제어 됨 | 컴포넌트 내부에서 제어 됨 |
예: 좋아요 버튼
import React, { Component } from "react";
class LikeButton etends Component {
constructor(props) {
super(props);
// state 초기값 설정
this.state = {
liked: false,
};
}
toggleLike = () => {
// setState를 통해 state 값 변경
this.setState({ liked: !this.state.liked });
};
render() {
return (
<button onClick={this.toggleLike}>
{this.state.liked ? "좋아요 취소" : "좋아요"}
</button>
);
}
}
export default LikeButton;
잘못된 방법:
this.state.lied = true; // 이렇게 직접 수정하면 안 된다.
올바른 방법:
this.setState( { liked: true } );
import React, { useState } from "react";
function LikeButton() {
const [liked, setLiked] = useState(false);
return (
<button onClick={ () => setLiked(!liked) }>
{liked ? "좋아요 취소" : "좋아요" }
</button>
);
}
React는 상태 변화가 있을 때 Virtual DOM을 통해 변경된 부분만 다시 렌더링 한다.
이 효율적 동작을 위해 React가 state 변경을 추적해야 하며, 이 과정은 setState를 통해 가능하다.