컴포넌트의 라이프사이클 단계
리액트 생명주기는 컴포넌트가 생성되고, 업데이트되고, 제거되는 과정을 관리하는 단계를 말한다.
과거 리액트가 함수형 컴포넌트가 아닌 클래스형 컴포넌트를 사용할 때에는 대표적인 생명주기 메서드가 세 가지가 있었다.
컴포넌트가 생성되고 DOM에 추가될 때 호출되는 단계인 Mount에서는 componentDidMount() 메서드
컴포넌트 상태나 props가 변경될 때 호출되는 단계인 Update에서는 componentDidUpdate() 메서드
컴포넌트가 DOM에서 제거될 때 호출되는 단계인 Unmount에서는 componentWillUnmount() 메서드
이 메서드들에 대해서는 아래 포스트에서 간략히 설명해 놓았다.
2023.05.26 - [React] - useCallback, state 스케쥴링, 클래스형 컴포넌트
useCallback, state 스케쥴링, 클래스형 컴포넌트
useCallback() 훅에 대해서 useCallback 훅은 함수를 저장하는 기능을 한다. 즉, 이전에 계산된 값을 저장하여 동일한 인자로 함수를 호출할 때 불필요한 계산을 줄이는 최적화 기법인 것이다. useCallback
itinfogarage.tistory.com
현재는 리액트에서 16.8 버전부터 함수형 컴포넌트를 사용하며, useEffect라는 하나의 훅으로 생명주기 기능을 처리할 수 있다.
useEffect 훅은 컴포넌트가 렌더링된 후 특정 작업을 수행할 수 있게 하는데, 위에 언급한 세 가지의 메서드의 역할을 모두 수행한다.
useEffect(() => {
console.log("컴포넌트 실행과 함께 한번 실행");
}, []);
위 예시처럼 입력하면 컴포넌트의 마운트단계에서 콘솔에 출력하는 작업을 한번 실행하게 된다.
useEffect(() => {
if (values) {
setReady(true);
} else {
setReady(false);
}
}, [values]);
위 예시에서는 values라는 값이 업데이트되면 실행되서 ready 값을 바꾸게 된다.
useEffect(() => {
const time = setInterval(() => {
console.log("출력");
}, 1000);
return () => {
clearInterval(time);
console.log("타이머 정리");
}
}, []);
위 예시는 1초마다 콘솔에 출력하는 코드이다. 그리고 컴포넌트에서 벗어날 때 이 출력도 끝나도록 클린업함수도 사용했다.
이처럼 마운트, 업데이트, 언마운트 각 라이프사이클 단계에서 이루어질 작업들을 useEffect 훅으로 간결하고 편하게 관리할 수 있다.
또, 리액트의 생명주기에 따라 관리하면 컴포넌트를 좀 더 효율적으로 관리하고 성능을 향상하는데 도움을 줄 수 있다.

'코드잇 프론트엔드 스프린트' 카테고리의 다른 글
[8주차 위클리페이퍼] CSS-IN-JS의 장단점 (0) | 2024.08.23 |
---|---|
[7주차 위클리페이퍼] 웹페이지 렌더링 방식 (0) | 2024.08.16 |
[5주차 위클리페이퍼] 렉시컬스코프 (0) | 2024.07.31 |
[5주차 위클리페이퍼] HTTP 메서드 (0) | 2024.07.30 |
[4주차 위클리페이퍼] 자바스크립트에서의 this (0) | 2024.07.26 |