일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- jsEvent Loop
- git
- 원티드인턴십
- CloudFront 무효화
- CPU와 GPU의 차이점
- JS
- 회고록
- 식별자란
- next/link
- react portal
- 프로젝트
- 인풋태그 엔터
- Redux
- input error
- Til
- Client-Side Navigation
- Mac OS NVM
- react
- JavaScript
- 원티드프리온보딩
- toast err
- NVM
- 알고리즘
- 향해99
- 유령 의존성
- Passed by Value
- 원티트 프리온보딩인턴십 1주차
- NextJs
- Node
- 광고지구
- Today
- Total
SUIN
[React] 컴포넌트 생명주기 / 클래스 , 함수 LifeCycle 본문
컴포넌트 생명주기( React LifeCycle) 이란?
개발을 할때 어떤 타이밍에 어떤 순차적으로 동작들이 일어나는가 , 즉 화면에 컴포넌트가 나타났다가 사라지기 까지의 모든 과정 을 라이프 사이클이라 하며 생명주기를 통해 불필요한 업데이트를 방지할 수 있다
클래스 컴포넌트의 경우 특정 라이프 사이클 메소드를 사용하며 함수 컴포넌트에서는 Hook을 사용하여 클래스 component 의 lifeCycle처럼 관리가 가능하다
클래스 Component Life Cycle
그때그때 어떤 변경에 따라 그려질때 마다 자기가 선언해놓은 메소드를 사용한다.
- constructor(): 컴포넌트가 마운트되기 전에 호출되며 메서드를 바인딩하거나 state를 초기화하는 작업이 없다면, 해당 React 컴포넌트에는 생성자를 구현하지 않아도 된다
- render(): 클래스 컴포넌트에서 반드시 구현돼야하는 유일한 메서드 이며 React.Component의 하위 class에서 반드시 정의해야 하는 메서드이다
- componentDidMount() : 컴포넌트가 화면에 나타나는 것을 마운트(Mount)한다고 표현합니다
- componentDidUpdate(prevProps, prevState, snapshot): DidMount()가 첫 렌더링 후에 호출 되는 함수라면, DidUpdate()는 리렌더링을 완료한 후 실행되는 함수입니다
- componentWillUnmount(): 컴포넌트가 사라지기 바로 직전에 호출
import React from "react";
// 클래스 컴포넌트
class LifecycleEx extends React.Component {
// constructor: 생성자 함수 - 초기값의 설정
constructor(props) {
super(props);
this.state = {cat_name: "나비",};
console.log("in constructor!");
}
changeCatName = () => {
//state값 변경
this.setState({ cat_name: "바둑이" });
console.log("고양이 이름을 바꾼다!");
};
//componentDidMount()
componentDidMount() {
console.log("in componentDidMount!");
}
//componentDidUpdate
componentDidUpdate(prevProps, prevState) {
console.log(prevProps, prevState);
console.log("in componentDidUpdate!");
}
// componentWillUnmount
componentWillUnmount() {
console.log("in componentWillUnmount!");
}
//render
render() {
console.log("in render!");
return (
<div>
<h1>제 고양이 이름은 {this.state.cat_name}입니다.</h1>
<button onClick={this.changeCatName}>고양이 이름 바꾸기</button>
</div>
);
}
}
export default LifecycleEx;
라이프 사이클의 흐름에따라 호출되는 메소드를 알아보자 클래스 컴포넌트의 라이프사이클은 크게 3단계로 구분해 볼 수 있다
마운트 (생성) -컴포넌트의 인스턴스가 생성되어 DOM 상에 삽입될 때에 순서대로 호출이 되는 메서드
- constructor()
- render()
- componentDidMount()
업데이트 (state값이 변경될때) - props 또는 state가 변경되면 갱신이 발생되며 순서대로 호출이 되는 메서드
- render()
- componentDidUpdate()
마운트 해제 (컴포넌트가 사라질때) - 컴포넌트가 DOM 상에서 제거될 때에 호출되는 메서드
- componentWillUnmount()
함수 Component Life Cycle
React Hook에서는 useEffect를 통해 react클래스의 componentDidMount나 componentDidUpdate, componentWillUnmount와 같은 목적으로lifeCycle를 관리한다.
- useEffect(): 리액트 컴포넌트가 렌더링 될 때마다 특정 작업을 수행하도록 설정할 수 있는 Hook , class 컴포넌트의 componentDidMount와 componentDidUpdate,componentWillUnmount 처럼 사용이 가능하다
- cleanup() - useEffect 에 대한 뒷정리를 해주는 메소드, deps 가 비어있는 경우에는 컴포넌트가 사라질 때 cleanup 함수가 호출된다.
useEffect()
useEffect(() => { },[]);
useEffect() 를 사용하여 클래스 컴포넌트 라이프 사이클 처럼 구현 가능
useEffect(() => { //componentDidMount :첫 렌더링 후 실행
//componentDidUpdate :리렌더링을 완료한 후 실행
return function cleanup() {
// componentWillUnmount :컴포넌트가 사라지기 바로 직전에 호출
};
});
useEffect 에서는 함수를 반환 할 수 있는데 이를 cleanup 함수라고 부른다
- useEffect return 함수 == componentWillUnmount
React Hook 알아보러 가기 👇🏻
https://suinchoi.tistory.com/41
공식문서
https://ko.reactjs.org/docs/react-component.html
https://ko.reactjs.org/docs/hooks-intro.html
'React' 카테고리의 다른 글
[Raact] JSX 란 (0) | 2022.02.07 |
---|---|
[React] React DOM 다루기 (JSX 없이 element 그려보기) (0) | 2022.02.07 |
React element 랜더링 자세히 알아보기 (0) | 2022.02.07 |
[React] Vanilla JS 와 React의 랜더링, 리액트 리랜더링 장점 알아보기 (0) | 2022.02.04 |
[React] React Hook (0) | 2021.11.28 |