일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- https://velog.io/@velopert/create-typescript-react-component
- 출처 : https://joshua1988.github.io/web-development/javascript/promise-for-beginners/
- toString
- 출처 : https://webdir.tistory.com/506
- 게시판
- http://jeonghwan-kim.github.io/dev/2019/06/25/react-ts.html
- object
- Today
- Total
Back Ground
ReactJS - PureComponent vs Component 본문
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 |