[React] PureComponent 과 Component의 비교

dev stefanCho·2021년 10월 19일
1

react

목록 보기
14/19
post-custom-banner

React.PureComponent is similar to React.Component. The difference between them is that React.Component doesn’t implement shouldComponentUpdate(), but React.PureComponent implements it with a shallow prop and state comparison. - React.PureComponent

1. 차이점


  • PureComponent : state와 props이 같으면, this.setState에 의해서 re-render 되지 않습니다.

  • Component : state와 props가 같더라도, this.setState로 re-render 됩니다.



2. 예제코드


예제 코드를 작성했습니다. (예제코드는 tsx로 작성됨)
Reset State 버튼 : 이 버튼은 cho 라는 state를 cho로 업데이트 합니다.

  • PureComponent로 만들어진 PureChild의 경우, count가 올라가지 않습니다.
  • Component로 만들어진 RegularChild의 경우, count가 올라갑니다. 즉 re-render 됩니다.



3. 주의할 점


1) state와 props가 같은 값인 지 비교하는 방식은 SC(Shallow Comparison)입니다. 따라서 value를 mutate를 할 수도 있다면, PureComponent를 사용하면 안됩니다.

  • 예를 들어 state가 array인 경우, push로 state 값을 변경한다면, 참조하는 주소값이 동일하므로, re-render되지 않을 수 있습니다.
    대부분의 경우에는 React.Component를 사용하고, High performance가 필요한 특정 경우에만 React.PureComponent를 사용하는 것이 좋습니다.

2). 위 예제코드의 Parent를 PureComponent로 사용하는 경우, 발생할 수 있는 문제점으로는 Parent가 re-render 되지 않는다면, 하위에 있는 PureChild와 RegularChild 또한 절대 re-render 될 수가 없습니다.



4. 참고


https://www.youtube.com/watch?v=YCRuTT31qR0

profile
Front-end Developer
post-custom-banner

0개의 댓글