생λͺ…μ£ΌκΈ° (Life Cycle)

λ¦¬μ—‘νŠΈμ˜ 라이프 사이클에 λ”°λ₯Έ λ©”μ†Œλ“œλ₯Ό μ •μ˜ν•œλ‹€.
μ•„λž˜ 두 그림을 ν™œμš©ν•˜μ—¬ 확인해 λ³΄λŠ”κ²ƒμ΄ μ’‹λ‹€.

λ¦¬μ—‘νŠΈ 라이프 사이클

λ¦¬μ—‘νŠΈ 라이프 사이클

constructor

  • μƒμ„±μž λ©”μ†Œλ“œ
  • μ»΄ν¬λ„ŒνŠΈκ°€ 처음 λ§Œλ“€μ–΄μ§ˆλ•Œ μ‹€ν–‰λœλ‹€.
  • κΈ°λ³Έ state λ₯Ό μ •μ˜ν•  수 μžˆλ‹€.
constructor(props) {
  super(props);
}

componentWillMount

  • μ»΄ν¬λ„ŒνŠΈκ°€ DOM μœ„μ— λ§Œλ“€μ–΄μ§€κΈ° 전에 μ‹€ν–‰λœλ‹€.
componentWillMount() {
  /* statement */
}

render

  • μ»΄ν¬λ„ŒνŠΈ λ Œλ”λ§μ„ λ‹΄λ‹Ήν•œλ‹€.
render() {
  return (
    <b>Hello World</b>
  );
}

componentDidMount

  • μ»΄ν¬λ„ŒνŠΈκ°€ λ§Œλ“€μ–΄μ§€κ³  첫 λ Œλ”λ§μ„ λ‹€ λ§ˆμΉœν›„ μ‹€ν–‰λ˜λŠ” λ©”μ†Œλ“œ
  • μ™ΈλΆ€ JavaScript Framework λ₯Ό μ—°λ™ν•˜κ±°λ‚˜ setTimeout, setInterval 및 AJAX 처리 등을 μž‘μ„±ν•œλ‹€.
componentDidMount() {
  /* statement */
}

componentWillReceiveProps

  • μ»΄ν¬λ„ŒνŠΈκ°€ prop λ₯Ό μƒˆλ‘œ λ°›μ•˜μ„ λ•Œ μ‹€ν–‰λ©λ‹ˆλ‹€.
  • prop 에 따라 state λ₯Ό μ—…λ°μ΄νŠΈ ν•΄μ•Ό ν•  λ•Œ μ‚¬μš©ν•˜λ©΄ μœ μš©ν•˜λ‹€.
  • 이 μ•ˆμ—μ„œ this.setState() λ₯Ό 해도 μΆ”κ°€μ μœΌλ‘œ λ Œλ”λ§ν•˜μ§€ μ•ŠλŠ”λ‹€.
componentWillReceiveProps(nextProps) {
  console.log(JSON.stringify(nextProps));
}

shouldComponentUpdate

  • prop ν˜Ήμ€ state κ°€ λ³€κ²½λ˜μ—ˆμ„ λ•Œ, 리 λžœλ”λ§ μ—¬λΆ€λ₯Ό κ²°μ •μ§“λŠ” λ©”μ†Œλ“œ
  • 리 λžœλ”λ§ μ—¬λΆ€λ₯Ό Boolean νƒ€μž…μœΌλ‘œ λ°˜ν™˜
shouldComponentUpdate(nextProps, nextState) {
  console.log(JSON.stringify(nextProps));
  console.log(JSON.stringify(nextState));

  return nextProps.id === this.props.id;
}

componentWillUpdate

  • μ»΄ν¬λ„ŒνŠΈκ°€ 업데이터 되기 전에 μ‹€ν–‰λ©λ‹ˆλ‹€.
  • 이 λ©”μ†Œλ“œ μ•ˆμ—μ„œ this.setState() λ₯Ό μ‚¬μš©ν•˜λ©΄ λ¬΄ν•œλ£¨ν”„μ— 빠진닀.
componentWillUpdate(nextProps, nextState) {
  console.log(JSON.stringify(nextProps));
  console.log(JSON.stringify(nextState));
}

componentDidUpdate

  • μ»΄ν¬λ„ŒνŠΈκ°€ 리 λžœλ”λ§μ„ 마친 ν›„ μ‹€ν–‰
componentDidUpdate(prevProps, prevState) {
  console.log(JSON.stringify(prevProps));
  console.log(JSON.stringify(prevState));
}

componentWillUnmount

  • μ»΄ν¬λ„ŒνŠΈκ°€ DOM μ—μ„œ 사라진 ν›„ μ‹€ν–‰λ˜λŠ” λ©”μ†Œλ“œ μž…λ‹ˆλ‹€.
componentWillUnmount() {
  /* statement */
}