OZ

[React] 컴포넌트 생명주기

iun 2024. 12. 30. 23:13

클래스형 컴포넌트 생명주기

 

컴포넌트의 생명주기 과정으로는 아래와 같이 있다

Mount(생성) -> Update(갱신) -> Unmount(제거)

 

클래스 컴포넌트로 화면에 표시될 인스턴스를 생성하게 되면

클래스형에서만 호출할 수 있는 함수들이 생긴다

class ... extends Component {
    componentDidMount() {
        console.log("DidMount");
    }
    componentDidUpdate() {
    	console.log("DidUpdate");
    }
    componentWillUnmount() {
    	console.log("WillUnmount");
    }
}

 

componentDidMount

화면에 표시될 인스턴스가 생성되면 호출되는 함수

componentDidUpdate

화면에 표시된 인스턴스가 상태변화되면 호출되는 함수

componentWillUnMount

화면에 표시된 인스턴스가 제거되면 호출되는 함수

 

함수형 컴포넌트 생명주기

클래스형과 다른 useEffectuseLayoutEffect 가 존재하는데, 사실상 useEffect 단 하나만 쓰인다

useEffect 하나만으로 세가지의 역할(생성,갱신,제거)을 구현할 수 있기 때문이다

그래서 함수형 컴포넌트는 useEffect 하나만 있다고 생각해도 된다

때문에 클래스형보다 구조나 코드가 간결하다는 특징이 있다 

 

useEffect의 배열 형태에 따른 실행시점 차이 

useEffect(() => {
    첫번째 인자(함수)
}, [두번째 인자(배열)])

 

첫번째 인자(함수)는 useEffect가 호출되면 실행될 코드

두번째 인자(배열)은 호출되는 조건을 정의해줄 배열이다

그래서 두번째 인자를 어떻게 쓰냐에 따라 실행시점이 달라진다

 

마운트, 언마운트, 리렌더링, 특정 상태값 변화

배열을 주지 않으면? DidMount + DidUpdate

빈 배열을 주면? DidMount

배열에 값을 담으면? DidMount + DidUptate

함수를 리턴하면? DidMount + DidUpdate + WillUnmout

 

이렇게 useEffect함수 하나로 세가지 기능 구현이 가능하게 된다!

'OZ' 카테고리의 다른 글

[React] 스타일링 Styled-Components  (0) 2025.01.04
[React] 스타일링 SASS & SCSS  (1) 2025.01.03
[Project] 동물조아  (0) 2024.12.30
[React] SPA와 MPA  (2) 2024.12.21
25 일자 : 오랜만에 과제 일찍 끝냈다  (0) 2024.12.20