-
React shouldComponentUpdate vs PureComponentStudy/React 2020. 1. 18. 10:49반응형
shouldComponentUpdate
- 컴포넌트가 업데이트 되는 시점에 호출되는 메서드
- 컴포넌트가 리렌더링 할지 말지를 결정하는 메서드
기본형태
shouldComponentUpdate(nextProps, nextState) { if(조건) { return true; } return false; };
- 리렌더링 할 조건을 작성한다
- true를 리턴하면 리렌더링하고, false를 리턴하면 리렌더링하지 않는다.
예시
import React, {Component} from 'react'; class Counter extends Component { state = { number: 0 }; shouldComponentUpdate(nextProps, nextState) { if(this.state.number !== nextState.number) { return true; } return false; }; onClick = () => { this.setState((prevState) => { return {number: prevState.number + 1} }); }; render() { return ( <> <button onClick={this.onClick}>click</button> <h1>{this.state.number}</h1> </> ); } } export default Counter;
shouldComponentUpdate(nextProps, nextState) {
if(this.state.number !== nextState.number) {
return true;
}
return false;
};: number 값이 이전과 현재가 다르면 true를 리턴하여 리렌더링한다.
PureComponent
- state가 변하면 알아서 감지하여 리렌더링을 해준다.
기본형태
import React, {PureComponent} from 'react'; class Counter extends PureComponent { //코드생략
- Component자리에 PureComponent를 넣는다.
예시
import React, {PureComponent} from 'react'; class Counter extends PureComponent { state = { number: 0 }; onClick = () => { this.setState((prevState) => { return {number: prevState.number + 1} }); }; render() { return ( <> <button onClick={this.onClick}>click</button> <h1>{this.state.number}</h1> </> ); } } export default Counter;
: number 값이 변하면 알아서 감지하여 리렌더링 한다.
반응형'Study > React' 카테고리의 다른 글
React state 동적인 상태값 (0) 2020.01.14 React 클래스형 컴포넌트 & 이벤트핸들링과 this (0) 2020.01.13 Immer 라이브러리로 쉽게 React state 불변성 지키기 (0) 2020.01.12 React Hooks : useContext() & Context API : createContext() (2) 2020.01.11 React Hooks : useReducer() 함수 (2) 2020.01.10