State Lifecycle

sjy·2022년 4월 8일
0

코딩공부

목록 보기
2/49

클래스 컴포넌트(class component)에서는 원하는 시점에 코드가 실행되고 종료되도록 설정을 할 수 있다.
필요없는 코드가 종료되지 않고 계속 사용된다면 그만큼 리소스가 낭비되기 때문에 시작과 종료시점을 설정하는 것은 중요하다.

import { Component, createRef } from "react";
import Router from "next/router";

interface IState { count: number; }

export default class CounterPage extends Component {

  inputRef = createRef();
  state = { count: 0 };

  componentDidMount() {
    console.log("mounted");
    this.inputRef.current?.focus();
  }

  componentDidUpdate() {
    console.log("updated and rerendered");
  }

  componentWillUnmount() {
    console.log("unmounted");
  }

  onClickCounter = () => {
    console.log(this.state.count);
    this.setState((prev: IState) => ({
      count: prev.count + 1,
    }));
  };

  onClickMove() {
    Router.push("/");
  }

  render() {
    return (
      <div>
        <input type="text" ref={this.inputRef} />
        <div>count : {this.state.count}</div>
        <button onClick={this.onClickCounter}>count up</button>
        <button onClick={this.onClickMove}>exit</button>
      </div>
    );
  }
}

랜더가 되고나면 먼저 마운트(componentDidMount())가 된다.
그리고 변화가 생겼을 때(업데이트 되었을 때) componentDidUpdate() 메서드가 실행되고
life cycle이 종료되면 componentWillUnmount() 메서드가 실행된다. 각각의 실행 시기는 코드에 있는 console.log가 찍히는 타이밍을 보면 알 수 있다.

1.랜더 되고 마운트 됐을 때

2.count up 버튼을 눌러 업데이트 되었을 때

3.exit 버튼을 눌러 종료되었을 때

profile
수학과 코딩

0개의 댓글