LifeCycle Method
리액트의 라이프 사이클 개념은 컴포넌트가 생기고, 바뀌고, 사라지는 각각의 시점을 통해 리액트를 효율적으로 다루기 위한 일종의 개념이다. 이를 통해 상황에 맞는 다양한 로직을 구현할 수 있고, 사용한 메모리를 효과적으로 반환하여 비용 문제 또한 해결할 수 있다.
🔖 컴포넌트가 브라우저 상에 나타나고, 업데이트되고, 사라질 때 호출되는 메서드들의 집합을 의미한다. lifecycle 메서드는 클래스형 컴포넌트에서만 사용하며, 함수형 컴포넌트에서는 useEffect()를 통해 이를 구현 가능하다.
1. Mount
🔖 첫번째 단계는 Mount로, 컴포넌트가 생성될 때 시점의 생명주기를 의미한다.
✅ 이때 호출되는 메서드는 총 4가지이다.
// 1. constructor
constructor(props) {
super(props);
console.log("constructor");
}
➡️ 컴포넌트의 생성자 메서드로, 가장 먼저 실행되며 최상위 prop을 인자로 받는다.
// 2. getDerivedStateFromProps
static getDerivedStateFromProps(nextProps, prevState) {
console.log("getDerivedStateFromProps");
if (nextProps.color !== prevState.color) {
return { color: nextProps.color };
}
return null;
}
➡️ props로 받아온 값을 state에 넣어줄 때 사용한다. return을 사용하여 특정 객체를 반환하면 컴포넌트의 state로 설정된다.
// 3. render
render() {
return <h1>Hello, {this.props.name}</h1>;
}
➡️ 컴포넌트를 렌더링하는 메서드이다.
// 4. componentDidMount
componentDidUpdate(prevProps, prevState, snapshot){
if (this.props.userID !== prevProps.userID) {
this.fetchData(this.props.userID);
}
}
➡️ 컴포넌트의 첫 렌더링 후 호출되는 메서드이다. 이는 이미 컴포넌트가 화면에 나타난 시점이며, 이를 통해 DOM을 조작하는 코드나 데이터 요청을 위한 fetch 함수 등을 사용한다.
Update
🔖 두번째는 Update로, 컴포넌트들이 업데이트되는 시점의 생명주기를 의미한다.
✅ 이때 기본적으로 실행되는 메서드는 총 5가지이다.
➡️ 첫번째는 직전의 Mount 단계에서도 실행했던 getDerivedStateFromProps() 이다.
// 2. shouldComponentUpdate
shouldComponentUpdate(nextProps, nextState) {
console.log("shouldComponentUpdate", nextProps, nextState);
// 숫자의 마지막 자리가 4면 리렌더링하지 않습니다
return nextState.number % 10 !== 4;
}
➡️ 컴포넌트의 리렌더링 여부를 결정하는 메서드이다.
➡️ 세번째는 render()이다.
// 4. getSnapshotBeforeUpdate
getSnapshotBeforeUpdate(prevProps, prevState) {
console.log("getSnapshotBeforeUpdate");
if (prevProps.color !== this.props.color) {
return this.myRef.style.color;
}
return null;
}
➡️ 컴포넌트의 변화가 일어나기 직전의 DOM상태를 가져와 특정 값을 반환하고, componentDidUpdate()에서 이를 받아와 사용 가능하다.
// 3. componentDidUpdate
componentDidUpdate(prevProps, prevState, snapshot) {
console.log("componentDidUpdate", prevProps, prevState);
if (snapshot) {
console.log("업데이트 되기 직전 색상: ", snapshot);
}
}
➡️ 리렌더링을 마치고 화면에 변화가 반영된 뒤에 호출되는 메서드이다.
Unmount
🔖 세번째는 Unmount로, 컴포넌트들이 화면에서 사라질 때 시점의 생명주기를 의미한다.
✅ 하나의 메서드만 실행된다.
// 1. componentWillUnmount
componentWillUnmount() {
console.log("componentWillUnmount");
}
➡️ 컴포넌트가 화면에서 사라지기 직전에 호출된다. 이때 등록했던 이벤트를 제거한다.
'Front-End Study > 코드잇 위클리 페이퍼' 카테고리의 다른 글
CSS-IN-JS에 대하여 (0) | 2024.04.25 |
---|---|
CSR, SSR, SSG 렌더링 (0) | 2024.04.25 |
React - Virtual DOM (0) | 2024.04.08 |
이벤트 루프 찍먹용 간단한 비동기 함수 동작원리 (0) | 2024.04.08 |
HTTP 요청 메소드 (1) | 2024.04.04 |