라이프사이클

React 에서 가장 어렵고 심오하고 힘들고 지치는 세가지를 뽑으라면 나는

  • Server-side rendering
  • code splitting (feat. webpack)
  • Life-cycle

이라고 생각한다. 아직도 생각하고 앞으로도 생각 할 것 같다.

일단 간단하게 생각해보자.

이전에도 말했다 시피 hook 은 제외하고 이야기 해보겠다.

아래에는 react 에서 제공하는 라이프 사이클을 나열 한 것이다.

import React from "react";

class LifeCycle extends React.Component {
  constructor(props) {
    super(props);
  }

  /**
   * 이건 이제 안쓴다.
   * 컴포넌트가 마운트 되기 전 실행한다.
   */
  componentWillMount() {}

  /**
   * 컴포넌트가 마운트 된 후 실행한다.
   * 이곳에서 직접 DOM 에 접근 할 수 있다.
   */
  componentDidMount() {}

  /**
   * 컴포넌트가 props 를 전달 받으면 실행한다.
   */
  componentWillReceiveProps(nextProps) {}

  /**
   * props 또는 state 가 변경될 때 랜더링을 할 지, 말 지 결정한다.
   * 기본값을 true 이다. false 경우 랜더링 되지 않는다.
   */
  shouldComponentUpdate(nextProps, nextState) {
    return true;
  }

  /**
   * props 와 state 가 업데이트 되기 직전에 수행한다.
   */
  componentWillUpdate(nextProps, nextState) {}

  /**
   * 컴포넌트가 업데이트 된 직후 수행한다.
   */
  componentDidUpdate(prevProps, prevState) {}

  /**
   * 컴포넌트가 마운트에서 해제 될 때 수행한다.
   */
  componentWillUnmount() {}

  /**
   * 컴포넌트가 랜더링 될 때 실행되는 메서드이다.
   */
  redner() {}
}

단순하게 리액트에서 제공하는 라이프 사이클은 이렇게 나열 할 수 있는데, 아래 그림이 더 잘 나타내었다고 본다.

리액트 라이프 사이클

라이프사이클을 잘 염두해 두고 개발하도록 하자.

모른체로 개발하다보면 삽질에 삽질을 거듭하는 나 자신을 발견 할 수 있을 것이다.