Back Ground

ReactJS - PureComponent vs Component 본문

Javascript/React.js

ReactJS - PureComponent vs Component

Back 2018. 12. 1. 11:35




React.PureComponent는 React.Component와 매우 유사하다. 하지만 한 가지 다른 점이 있다면, React의 생명주기 메소드 중 하나인 shouldComponentUpdate를 다루는 방식이 다르다는 것이다.
React.PureComponent는 shouldComponentUpdate가 이미 구현되어 있는데, props와 state를 얕은 비교를 통해 비교한 뒤 변경된 것이 있을 때만 리렌더링한다.
즉, React.PureComponent를 사용하면 React애플리케이션 성능을 향상시키는 데 가장 중요한 것 중 하나인 shouldComponentUpdate를 신경쓰지 않아도 된다.
하지만 props나 state가 복잡한 데이터 구조를 포함하고 있다면, props와 state를 비교하는 과정에서 의도하지 않은 결과가 발생할 수 있다.
(얕은 비교(shallow comparison)와 깊은 비교(deep comparison)의 차이를 알면 무슨 의미인지 알 것이다.)

PureComponent vs Component

사용자가 버튼을 클릭하면 카운터가 랜덤하게 증가하는 컴퍼넌트이다.
PureComponent와 Component의 차이를 비교하려면, 아래 예제 코드에서 단지 Pure를 지우거나 다시 쓰면 된다.
PureComponent를 extends한 컴퍼넌트는 카운터가 증가할 때만 re-render되지만, Component를 extends한 컴퍼넌트는 버튼을 클릭하면 setState가 실행되기 때문에 매 클릭마다 re-render된다는 것을 볼 수 있다.
(참고로 PureComponent를 extends한 컴퍼넌트 안에서도 shouldComponentUpdate 메소드를 사용할 수 있다.)





결론

functional components는 아직까지 최적화되어있지 않다. 그 이유는 함수형 컴퍼넌트도 결국엔 클래스 기반 컴퍼넌트로 래핑되기 때문이다.
(하지만 React Team은 언젠가 함수형 컴퍼넌트를 최적화하겠다고 했다.)
따라서 현재까지는 최적화가 필요한 컴퍼넌트에서는 클래스 컴퍼넌트의 shouldComponentUpdate 메소드를 사용하거나 PureComponent를 통해 최적화하는 것이 가장 좋은 방법이라고 할 수 있다.




출처 : https://wonism.github.io/react-pure-component/





'Javascript > React.js' 카테고리의 다른 글

ReactJS - Ducks 파일 구조  (0) 2018.12.14
ReactJS - Immutable.js  (0) 2018.12.02
ReactJS - 컴포넌트 이용한 게시판  (0) 2018.12.01
ReactJS - Redux  (0) 2018.11.24
React - 스타일링(SCSS)  (0) 2018.11.02
Comments