728x90

react에서 state는 immutable하게 쓰여야 한다고 얘기한다.

이것은 무슨말인가.

간단한 예시를 통해 쉽게 확인해보자

 

state={ lucky_number: 7, };

이와같이 state가 설정되어 있을떄

this.state.lucky.number = 4

혹은

this.state.lucky_number += -3

과 같이 값에 변화를 주는 행위를 하면 안된다는 말이다.

그렇다면 lucky_number의 값을 바꿔주려면 어떻게 해야할까 ?

this.setState({})를 통해 새로 값을 업데이트 해줘야한다.

 

this.setState({ lucky_number: 4});

or

this.setState(prevState => ({

  lucky_number: prevState + 3

}});

이러한 방식이 react에서 제시하는 올바른 state 관리라고 할 수 있다.

 

그렇다면 state중 object가 있다면 어떨까

state={

  firend: {

    phone: 99,

    age: 12,

    birth: 0011-02-02

  }

};

이런 상황에서 prevState를 통해 phone넘버를 정상적으로 갱신해주고 싶다면?

this.setState(prevState => ({

  friend: {

    ...prevState.friend, // 혹은, ...this.state.friend

    phone: 010-0000-1111

  }

}));

728x90
반응형

'개발, 코딩 > React' 카테고리의 다른 글

Input focusout - redux/react  (0) 2019.10.29
html - hash / react- ?  (0) 2019.10.29
create-react-app 에러  (0) 2019.07.30
redux입문 - (1)  (0) 2019.06.22
React의 Ref  (0) 2019.06.01