React

useEffect, 클래스형 컴포넌트 생명주기 메소드 대체

AgileJung 2022. 7. 30. 18:54
728x90
반응형

훅이 나오기 전 리액트의 생명주기는 클래스형 컴포넌트의 생명주기 메소드를 사용하였다.

- componentDidMount, componentDidUpdate, componentWillUnmount

 

하지만 훅이 나오면서 useEffect가 클래스형 컴포넌트의 생명주기 메소드를 대체하여 사용하고 있다.

 

기존 클래스형 컴포넌트의 생명주기 메서드를 함수형 컴포넌트에서는 어떻게 대체하는지 궁금해서 정리해본다.

 

클래스형 컴포넌트

mount

- componentDidmount

컴포넌트를 처음 렌더링 한 후, 최초로 렌더링 되는 시점에 단 한 번만 실행된다.

- useEffect

useEffect의 의존성 배열에 빈 배열을 전달하면 최초 렌더링 될 때 한 번만 실행됨

useEffect(()=>{
	console.log('componentDidmount');
},[]);

update

- componentUpmount

update는 props, state, 부모 컴포넌트가 렌더링 될 때, 강제 함수로 렌더링 될 때 발생한다.

- useEffect

1. state 아무거나 바뀔 때마다 실행

useEffect(() => {
	console.log('componentDidUpdate');
});

2. 특정 state가 바뀔 때마다 실행

useEffect(() => {
	console.log('componentDidUpdate');
}, [특정 state]);

 


unmount

- componentUnmount

컴포넌트가 DOM에서 제거될 때 사용한다.

 

- useEffect

return 함수가 componentUnmount 역할을 한다.

useEffect()를 끝내며 실행하기 때문에 clean-up함수라고 부른다.

useEffect(() => {
	console.log('componentDidmount');
    return() => {
    	console.log('clean-up , componentWillUnmount');
    }
}, []);

 

 


 

정리하기

useEffect로 생명주기 이해하기

 

componentDidmount => useEffect의 의존성 배열에 빈 값 전달

 

componentUpdatemount =>

1. 변화될 때마다 업데이트 하기 => useEffect 의존성 배열 사용 안 함(default = 모든 state)

2. 특정 state 변화될 때마다 업데이트 하기 = useEffect 의존성 배열에 특정 state 값 전달

 

componentWillUnmount =>  useEffect에 return 함수 사용 (clean-up함수)

의존성 배열을 사용하지 않으면 계속 사용되고 의존성 배열에 빈 값을 전달하면 작업이 끝날 때 단 한번 실행한다.

 

 

728x90
반응형