카테고리 없음

컴포넌트 State

개발자자자 2021. 9. 14. 10:23

setState 를 통해서 리액트의 state를 변경할 수 있다.

 

state 가 변경되면, 페이지는 다시 렌더링 된다.

 

props 와 state 모두 결과물에 영향을 주는 데이터이다. 

 

두가지의 차이는 props 는 함수에서 매개변수를 전달하는 것처럼 컴포넌트에 props를 전달해서 사용할 수 있다.

state 는 함수내에서 선언된 지역변수처럼 컴포넌트 안에서 관리되고 사용된다.

==================

setState 는 비동기로 처리되므로 , 연속된 setState 의 함수 열거는 잘 작동하지 않을 수 있다.

예를들어

incrementCount() {

  this.setState({count: this.state.count + 1});

}

this.incrementCount();
this.incrementCount();
this.incrementCount();

위는 잘 작동하지 않을 수 있다 . this.state.count 가 이전 직전의 state값을 가져오지 않을 수 있다.

 

그래서 아래와 같이 해보자. 

incrementCount() {
  this.setState((state) => {   // 중요: 값을 업데이트할 때 `this.state` 대신 `state` 값을 읽어옵니다.
    return {count: state.count + 1}
  });
}