개발/react

[React] 3-11 PureComponent와 React.memo

s2somang 2022. 3. 8. 01:43
인프런에 제로초님의 강의를 보고 정리한 내용입니다. 
[ 웹 게임을 만들며 배우는 React ]
https://www.inflearn.com/course/web-game-react

 

렌더링 되는 것을 막는 두번째 방법

PureComponent

import React, {PureComponent} from 'react';

class Test extends PureComponent {
    state = {
        counter:0,
    };

    onClick = () => {
        this.setState({});
    };

    render(){
        console.log('렌더링', this.state);
        return (
            <div>
                <button onClick={this.onClick}>클릭</button>
            </div>
            )
    }
}

export default Test;

 

shouldComponentUpdate에서 return을 true로할지 false로 할지 자동으로 정해줌
state가 있으면 바뀌었는지 안바뀌었는지를 자동으로 판단함
단점이라면 객체나 배열같은 참조관계가이쓴 복잡한 구조의 경우에는 제대로 작동하지 않을 수 있다.

 

새로운 array가 나오면 아래처럼 배열을 복사해서 사용해주면 된다 

array: [...this.state.array, 1]
        // 기존array , 새로운 값

값을 바꾼것을 PureComponent가 알아채야함

 

state에 객체 구조를 안쓰는게 좋다!!

 

 

React.memo

 

훅스에서는 퓨어컴포넌트도 슈드컴포넌틍업데이트도 없다. 

그래서 존재하는것이 React.memo !