티스토리 뷰

React

[React] 기본 / Life Cycle / Hooks

에스파니아 2022. 3. 23. 14:16
728x90
반응형

Life Cycle (생애주기)



인간 세계에서의 생애 주기란 시간의 흐름에 따라 변화해가는 개인 생애의 일정한 단계별 과정을 말한다. 기본적으로 역량의 변화 발전에 따라 영유아기, 아동기, 청소년기, 성인기, 노인기로 구분할 수 있다. 

이처럼, React Component 도 생애 주기 , Life Cycle 이 존재 한다.



 

React Component / Life Cycle



 

Class 기반 React Component 에서 생명 주기 에 따라 호출하는 함수가 존재 한다.

 

 

React Hooks



Class 기반 React Component 에서 사용하는 생명주기 함수의 기능을 함수형 React Component 에서 사용할 수 있도록 해주는 기능이다.

 

 

UseEffect



함수형 React Component 에서 Life Cycle을 제어하기 위해서 UseEffect 라는 Hooks 를 사용한다.


import React, {useEffect} from "react";

useEffect(()=>{
	//to do..
}, []);

 

첫번째 매개변수 : Callback 함수
두번째 매개변수 : Dependency Array(의존성 배열) : 배열내에 들어있는 값이 변화하면 Callback 함수 실행



UseEffect 를 사용하여 Component 제어



import React, {useEffect, useState} from "react";

const LifeCycle = () => {
    const [count, setCount] = useState(0);
    const [text, setText] = useState("");

    //Mount
    //dependency array 가 빈 배열일 때
    useEffect(()=>{
        console.log('Mount');
    }, []);

    //Update
    //dependency array 를 전달하지 않을 때
    useEffect(()=>{
        console.log('Update');
    })

    //dependency array에 전달한 배열의 값이 변경되었을 때
    useEffect(()=>{
        console.log(`count is update : ${count}`);;
    }, [count]);

    useEffect(()=>{
        console.log(`text is update : ${text}`);
    }, [text])

    return (
        <div style={{padding:20}}>
            {count}
           <button onClick={()=>{setCount(count+1)}}>+</button>
        
            <div>
                <input value={text} onChange={(e)=>setText(e.target.value)}/>
            </div>
        </div>
    );
};

export default LifeCycle;

- mount
useEffect hooks 의 dependency array가 빈 배열일 때, 해당 component가 mount 될 때 callback 함수가 호출된다.
- update
useEffect hooks 의 dependency array에 값을 전달하지 않거나, dependency array에 전달한 배열의 값이 변경되었을 때 callback 함수가 호출된다.

import React, {useEffect, useState} from "react";

const UnmountTest = () =>{

    useEffect(()=>{
        //Mount
        console.log("Mount");

        return () => {
            //Unmount
            console.log("Unmount");
        }
    }, []);

    return (
        <div>Unmount Testing Component</div>
    )
}

const LifeCycle = () => {
    const [isVisible, setIsVisible] = useState(false);
    const toggle = () => setIsVisible(!isVisible);

    return (
        <div style={{padding:20}}>
            <button onClick={toggle}>ON/OFF</button>
            {isVisible && <UnmountTest/>}
        </div>
    );
};

export default LifeCycle;

- unmount
component의 useEffect hooks 에서 return 하는 함수는 해당 component가 unmount 될 때 호출된다.



728x90

'React' 카테고리의 다른 글

[React] 실습 / DOM 조작 / useRef  (0) 2022.04.18
[React] 실습 / 사용자 입력 처리  (0) 2022.04.18
[React] 입문 / Props 응용 / re-render  (0) 2022.03.08
[React] 입문 / Props  (0) 2022.03.08
[React] 입문 / State (상태)  (0) 2022.03.04
댓글
반응형
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2026/01   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함