리액트 스테이트 라이프사이클 (State Lifecycle)

Jeong-Taek·2022년 9월 24일
0

리액트의 생명주기

컴포넌트는 생성(mounting) -> 업데이트(updating) -> 제거(unmounting)의 생명주기를 갖는다.

리액트 클래스 컴포넌트는 라이프 사이클 메서드를 사용하고, 함수형 컴포넌트는 Hook을 사용한다.

1. Class Componet 생명주기

마운트(mount)
컴포넌트가 생성 될때 발생하는 생명주기를 살펴보자

  1. constructor
    컴포넌트 생성자 메서드, 컴포넌트가 생성되면 가장 먼저 실행되는 메서드
    this.props, this.state에 접근이 가능하고 리액트 요소를 반환한다.

  2. getDerivedStateFromProps
    props로부터 파생된 state를 가져옴 즉 props로 받아온 것을 state에 넣어주고 싶을때 사용한다.

  3. render
    컴포넌트를 렌더링하는 메서드다.

  4. componentDidMount
    컴포넌트가 마운트 됨, 즉 컴포넌트의 첫번째 렌더링이 마치면 호출되는 메서드다.
    이 메서드가 호출되는 시점에는 화면에 컴포넌트가 나타난 상태
    여기서는 주로 DOM을 사용해야 하는 외부 라이브러리 연동, 해당 컴포넌트에서 필요로하는 데이터를 ajax로 요청, 등의 행위를 한다.

useEffect(()=>{
	console.log("componentDidMount");     
},[])

업데이트(updating)
컴포넌트가 업데이트되는 시점에 어떤 생명주기 메서드들이 호출되는지 알아보자

getDerivedStateFromProps
컴포넌트의 props나 state가 바뀌었을때도 이 메서드가 호출됨

shouldComponentUpdate
컴포넌트가 리렌더링 할지 말지를 결정하는 메서드다.

componentDidUpdate
컴포넌트가 업데이트 되고 난 후 발생한다.

의존성 배열이 변할때만 useEffect가 실행하는 것과 같음

useEffect(() => {
	console.log("카운트 체인지");     
},[count]);

언마운트(unmount)
언마운트라는 것은 컴포넌트가 화면에서 사라지는 것을 의미한다. 언마운트에 관련된 생명주기 메서드는 componentWillUnmount 하나임

componentWillUnmount
컴포넌트가 화면에서 사라지기 직전에 호출된다.
여기서 주로 DOM에 직접 등록했었던 이벤트를 제거하고, 만약에 setTimeout을 걸은 것이 있다면 clearTimeout을 통하여 제거를한다.
추가적으로, 외부 라이브러리를 사용한게 있고 해당 라이브러리에 dispose기능이 있다면 여기서 호출해주면 된다.

useEffect(()=>{
console.log("");
return(() => exampleAPI.unsubscribe());
})

Functional Componet 생명주기
리액트에서 Hook은 함수형 컴포넌트에서 React state와 생명주기 기능을 연동 할 수 있게 해주는 함수다.
Hook은 class 안에서는 동작하지 않고, class없이 React를 사용할 수 있게 한다.

0개의 댓글