ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • useEffect, 클래스형 컴포넌트 생명주기 메소드 대체
    React 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
    반응형

    댓글

Designed by Tistory.