더북(TheBook)

5.6.2 shouldComponentUpdate()

다음으로 살펴볼 shouldComponentUpdate() 이벤트는 렌더링 직전에 실행된다. 렌더링은 새로운 속성이나 상태가 전달된 후에 이뤄진다. shouldComponentUpdate() 이벤트는 초기 렌더링 시점이나 forceUpdate() 호출 시에는 실행되지 않는다.

shouldComponentUpdate()에서 false를 반환하도록 구현하면 React가 다시 렌더링되지 않도록 할 수 있다. 변경된 부분이 없고, 불필요한 성능 저하를 피하고자 할 때(컴포넌트 수백 개를 다뤄야 할 때) 유용한 방법이다. 예를 들어 다음 코드에서는 + 연산자를 이용해서 불 값인 isVisible을 숫자로 변환한 후에 opacity 값과 비교한다.

shouldComponentUpdate(newProps, newState) {
  return this.state.opacity !== + newProps.isVisible
}

 

isVisiblefalse이고 this.state.opacity0이면 render()를 실행하지 않는다. 또한, componentWillUpdate()componentDidUpdate()도 호출하지 않는다. 즉, 컴포넌트의 재렌더링을 제어할 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.