React를 쓰지만, 항상 Life Cycle을 제대로 이해못해서... 정리할 겸 포스팅하게 됐습니다!
이 글은 React Components의 Life Cycle을 제대로 이해하는 것을 목표로 합니다!
일단 리액트의 라이프 사이클은 세가지 개념으로 동작합니다.
마운트
, 업데이트
, 언마운트
3가지 개념만 잘 이해하고 있으면 라이프 사이클을 알고 있다고 말할 수 있습니다.
마운트
는 DOM이 생성되고 웹 브라우저에 나타나는 것을 말합니다.
업데이트
는 데이터 변경으로 인해 컴포넌트가 refresh 되는 것을 말합니다.
아래와 같이 4가지 경우일 때, 업데이트를 실시합니다.
1. props가 바뀔 경우
2. state가 바뀔 경우
3. 부모 컴포넌트가 리렌더링될 때
4. this.forceUpdate를 이용하여 강제로 렌더링을 트리거할 때
언마운트
는 마운트의 반대 과정으로 DOM에서 제거하는 것을 언마운트라고 합니다.
라이프 사이클의 전체적인 개요를 알아봤으니, 각 과정에서 지원하는 메소드들을 살펴보겠습니다.
컴포넌트를 새로 만들때마다 호출되는 클래스 생성자 메서드입니다.
props에 있는 값을 state에 넣을 때 사용하는 메서드입니다.
개발자가 정의한 JSX를 렌더링하는 메서드입니다.
컴포넌트가 웹 브라우저에 렌더링이 된 후 호출되는 메서드입니다.
마운트 과정에서도 호출이 되지만, 업데이트 과정에서도 호출이 됩니다.
props의 변화
에 따라 state값에 변화
를 주고 싶을 때, 사용됩니다.
컴포넌트가 리렌더링
을 해야할지 결정
하는 메소드입니다.
true
를 반환하면, 업데이트를 진행하고, 다음 사이클을 계속해서 이어나갑니다.
false
를 반환하면, 작업을 중지합니다. 즉, 리렌더링 되지 않습니다.
this.forceUpdate() 함수를 호출할 경우, 이 과정을 생략하고 바로 render 함수를 호출합니다.
컴포넌트를 리렌더링 합니다.
컴포넌트 변화를 DOM에 반영하기 바로 직전에 호출하는 메서드입니다.
컴포넌트 업데이트 작업이 끝난 후 호출하는 메서드입니다.
컴포넌트를 DOM에서 제거할 때는 componentWillUnmount
메소드를 호출합니다.