React Class vs React Hooks Lifecycle 비교 정리

2019.11.28(4시간 후)

React Class에서 사용하는 Lifecycle과 React Hooks에서 사용하는 Lifecycle의 차이점을 비교 정리한다.

ComponentDidMount

// Class
class Example extends React.Component {
    componentDidMount() {
        ...
    }
}

// Hook
const Example = () => {
    useEffect(() => {
        ...
    }, []);
}

ComponentWillUnmount

// Class
class Example extends React.Component {
    componentWillUnmount() {
        ...
    }
}

// Hook
const Example = () => {
    useEffect(() => {
        return () => {
            ...
        };
    }, []);
}

ComponentWillReceiveProps

// Class
class Example extends React.Component {
    componentWillReceiveProps(nextProps) {
        ...
    }
    or
    UNSAFE_componentWillReceiveProps(nextProps) {
        ...
    }
}

// Hook
const Example = (props) => {
    const { value } = props;
    useEffect(() => {
        ...
    }, [value]);
}

ShouldComponentUpdate

// Class
class Example extends React.Component {
    shouldComponentUpdate(nextProps) {
        return nextProps.value !== this.props.value;
    }
}

// Hook
const Example = React.memo(() => {
    ...
}, (prevProps, nextProps) => {
    return nextProps.value === prevProps.value;
})

주의

class 컴포넌트의 shouldComponentUpdate() 메서드와 달리, areEqual 함수는 props들이 서로 같으면 true를 반환하고, props들이 서로 다르면 false를 반환합니다. 이것은 shouldComponentUpdate와 정반대의 동작입니다.

ComponentDidUpdate

// Class
class Example extends React.Component {
    componentDidUpdate(prevProps, prevState) {
        ...
    }
}

// Hook
const Example = () => {
    useEffect(() => {
        ...
    });
}
react
react-hooks
Sung Gyun Oh
Sung Gyun Oh
Hello world!