리액트 setState를 함수형으로 사용해야하는 이유
2018. 4. 18. 10:48ㆍDev/javascript
반응형
setState 함수에 인자를 object로 줄 경우 setState는 비동기로 작동한다.
비동기로 작동한다는 것은 순서를 보장하지 못하고 순서가 중요한 로직일 경우 예측되지 않은 결과를 초래할 수 있다.
setState({count: this.state.count+1});
setState({count: this.state.count+1});
setState({count: this.state.count+1});
한 함수안에서 위의 코드가 실행되면 +3을 기대하게 되지만 실제로는 +1된다.
내부적으로 한꺼번에 처리하기 때문이다. 더 자세한 내부 작동은 관련글에서 확인할 수 있다.
하지만 함수형으로 실행할 경우
setState((state, props) => ({count: state.count+1}));
setState((state, props) => ({count: state.count+1}));
실행 큐에 적재되어 차례차례 실행된다.
함수형 프로그래밍은 많은 점에서 장점이 있다.
테스트가 쉽고 선언적이라 직관적이고 재사용도 용이하다.
간단한 상태 변화라도 여러면에서 함수형으로 작성하는 편이 더 유용할 것이다.
반응형
'Dev > javascript' 카테고리의 다른 글
웹에서 자바스크립트 구동 환경 (0) | 2017.10.09 |
---|---|
'key' in object VS object.hasOwnProperty('key') (0) | 2017.09.28 |
javascript 배열 (0) | 2017.09.13 |
Future of JavaScript in 2017 and Beyond (0) | 2017.08.31 |
React가 프론트엔드에서 인기를 끌고 있는 이유 (0) | 2017.08.26 |