React - 함수형 컴포넌트에서 라이프사이클 구현하는 법

2024. 11. 11. 14:03·Category/React
728x90

React의 라이프사이클 메서드는 원래 클래스 컴포넌트에서만 지원되었지만, React Hook이 도입된 이후 함수형 컴포넌트에서도 라이프사이클 기능을 구현할 수 있게 되었습니다.

함수형 컴포넌트에서 라이프사이클 구현 방식

함수형 컴포넌트는 useEffect Hook을 사용해 다양한 라이프사이클을 구현할 수 있습니다. useEffect는 클래스 컴포넌트의 라이프사이클 메서드인 componentDidMount, componentDidUpdate, componentWillUnmount 등의 역할을 함수형 컴포넌트에서 수행할 수 있게 해줍니다.

주요 라이프사이클 비교

라이프사이클 메서드 | 클래스 컴포넌트 방식 | 함수형 컴포넌트 방식 (useEffect)

컴포넌트 마운트 시 componentDidMount useEffect(() => { ... }, []);
업데이트 시 componentDidUpdate useEffect(() => { ... });
언마운트 시 componentWillUnmount useEffect(() => { return () => { ... }; }, []);

예시 코드: 함수형 컴포넌트에서 라이프사이클 사용

함수형 컴포넌트에서 마운트, 업데이트, 언마운트를 처리하는 예제입니다.

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

function App() {
  const [count, setCount] = useState(0);

  // 마운트 및 업데이트 시 실행
  useEffect(() => {
    console.log("컴포넌트가 마운트되거나 업데이트되었습니다.");

    // 언마운트 시 실행
    return () => {
      console.log("컴포넌트가 언마운트됩니다.");
    };
  }, [count]); // count가 변경될 때마다 실행

  return (
    <div>
      <h1>Count: {count}</h1>
      <button onClick={() => setCount(count + 1)}>Increase</button>
    </div>
  );
}

export default App;

정리

클래스 컴포넌트에서는 라이프사이클 메서드를 명시적으로 사용하는 반면, 함수형 컴포넌트에서는 useEffect Hook을 사용하여 비슷한 효과를 낼 수 있습니다. 최신 React에서는 함수형 컴포넌트와 Hook을 통해 라이프사이클 관리가 가능하므로, 둘 다 지원되지만 함수형 컴포넌트와 Hook을 사용하는 방식이 권장됩니다.

728x90

'Category > React' 카테고리의 다른 글

ReactNode란?  (0) 2025.03.10
React Router에서 navigate와 Link의 차이점 이해하기  (0) 2024.11.14
리액트 훅 useEffect와 useRef  (1) 2024.11.12
React Router 버전과 구현 스타일에 따른 차이 비교  (0) 2024.11.12
React - reducer function  (0) 2024.08.26
'Category/React' 카테고리의 다른 글
  • React Router에서 navigate와 Link의 차이점 이해하기
  • 리액트 훅 useEffect와 useRef
  • React Router 버전과 구현 스타일에 따른 차이 비교
  • React - reducer function
Corinee
Corinee
  • Corinee
    Coding Note
    Corinee
  • 전체
    오늘
    어제
    • 분류 전체보기 (351) N
      • Category (268) N
        • Algorithm (7)
        • SQL (1)
        • Java (4)
        • C (9)
        • React (6)
        • JavaScript (9)
        • CSS (2)
        • Node (1)
        • SpringBoot (26) N
        • Database (3)
        • Network (1)
        • Django (6)
        • Python (21)
        • Flask (4)
        • iOS (25)
        • Swift (4)
        • Flutter (11)
        • Dart (3)
        • Git (1)
        • Firebase (1)
        • Gof (1)
        • 정보처리기사 (112)
        • AI (5)
        • NestJs (4)
        • Docker (1)
      • Projects (1)
        • Chrome Extension (1)
      • 눈 감고 치는 (0)
        • Socket (0)
      • Note (76)
        • nk (75)
      • 개인 정보 처리 방침 (1)
      • 취업 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    react
    중첩 함수(nested function)
    intellij 콘솔 한글 깨짐
    프로세스 강제 종료
    react router
    inp
    원시값(primitive)
    counter
    semver)
    x.y.z (메이저.마이너.패치)
    structuredclone()
    math.h
    json.parse(json.stringify())
    ajax (asynchronous javascript and xml)
    쉽게 풀어쓴 C언어 Express
    소프트웨어 버전 관리
    javascript 필수 문법
    core web vitals
    useEffect
    public vs assets
    Jest
    stdlib.h
    defaultdict
    Collections
    시맨틱 버전(semantic versioning
    mermaid-cli
    chrome extension 자동 배포
    jackson 라이브러리
    styled-components
    named export vs default export
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Corinee
React - 함수형 컴포넌트에서 라이프사이클 구현하는 법
상단으로

티스토리툴바