Vue.js 를 배워보자/2. Vue.js 기본 개념

라이프 사이클

_Blue_Sky_ 2024. 10. 4. 19:09
728x90
728x90

Vue.js 라이프 사이클: 컴포넌트의 탄생부터 소멸까지

 

Vue.js는 현대적인 프론트엔드 개발을 위한 강력한 도구입니다. 컴포넌트 기반의 아키텍처를 채택하여 복잡한 UI를 효율적으로 관리할 수 있도록 돕습니다. Vue.js 컴포넌트는 생성, 업데이트, 그리고 소멸의 과정을 거치며, 이러한 과정을 **라이프 사이클(Lifecycle)**이라고 합니다.

라이프 사이클은 컴포넌트의 각 단계에서 특정 함수(훅)를 호출하여 원하는 로직을 실행할 수 있도록 해줍니다. 이를 통해 데이터 초기화, DOM 조작, 이벤트 처리 등 다양한 작업을 수행할 수 있습니다.

본 글에서는 Vue.js 라이프 사이클의 각 단계와 이에 해당하는 훅에 대해 자세히 설명하고, 실제 개발에서 어떻게 활용할 수 있는지 예시와 함께 살펴보겠습니다.

728x90

라이프 사이클 단계

Vue.js 라이프 사이클은 크게 다음과 같은 단계로 나눌 수 있습니다.

1. 생성 단계 (Creation)

  • beforeCreate: 컴포넌트가 생성되기 직전에 호출됩니다. 데이터나 메서드가 아직 초기화되지 않은 상태입니다.
  • created: 컴포넌트가 생성된 직후 호출됩니다. 데이터 초기화, 서버 통신 등을 수행하기 좋은 시점입니다.

2. 마운트 단계 (Mounting)

  • beforeMount: 컴포넌트가 DOM에 마운트되기 직전에 호출됩니다.
  • mounted: 컴포넌트가 DOM에 마운트된 직후 호출됩니다. DOM에 접근하여 조작할 수 있습니다.

3. 업데이트 단계 (Updating)

  • beforeUpdate: 데이터가 변경되어 컴포넌트가 업데이트되기 직전에 호출됩니다.
  • updated: 데이터가 변경되고 컴포넌트가 업데이트된 직후 호출됩니다.

4. 소멸 단계 (Destruction)

  • beforeDestroy: 컴포넌트가 파괴되기 직전에 호출됩니다. 타임아웃, 이벤트 리스너 해제 등 정리 작업을 수행하기 좋은 시점입니다.
  • destroyed: 컴포넌트가 파괴된 직후 호출됩니다. 컴포넌트 인스턴스에 더 이상 접근할 수 없습니다.

각 단계별 훅의 활용 예시

  • beforeCreate:
    • 컴포넌트 초기 설정
    • 이벤트 버스 등록
  • created:
    • 데이터 초기화 (API 호출, 로컬 스토리지에서 데이터 가져오기 등)
    • 컴퓨터 계산
    • 다른 인스턴스에 데이터 전달
  • beforeMount:
    • DOM 생성 전 최종 데이터 준비
  • mounted:
    • DOM 조작 (요소 추가, 클래스 추가/삭제 등)
    • 서드파티 라이브러리 초기화
    • 이벤트 리스너 등록
  • beforeUpdate:
    • 데이터 변경 전 최종 확인
  • updated:
    • DOM 업데이트 후 추가 작업 (예: 스크롤 위치 복원)
  • beforeDestroy:
    • 타임아웃, 인터벌 해제
    • 이벤트 리스너 해제
    • 자식 컴포넌트 제거
  • destroyed:
    • 청소 작업 (예: 메모리 해제)

실제 개발에서의 활용

  • 데이터 페칭: created 훅에서 API를 호출하여 데이터를 가져와 상태를 업데이트합니다.
  • DOM 조작: mounted 훅에서 DOM에 접근하여 초기 화면을 구성하거나, updated 훅에서 데이터 변경에 따라 DOM을 동적으로 업데이트합니다.
  • 라이프 사이클 이벤트: $emit 메서드를 사용하여 부모 컴포넌트에 이벤트를 전달하고, 자식 컴포넌트의 상태 변화를 알릴 수 있습니다.
  • 컴포넌트 간 통신: 이벤트 버스를 사용하여 비관련 컴포넌트 간에 데이터를 전달할 수 있습니다.
  • 컴포넌트 생명주기 관리: beforeDestroy 훅에서 타임아웃, 인터벌 등을 해제하여 메모리 누수를 방지합니다.

결론

Vue.js 라이프 사이클은 컴포넌트의 상태 변화에 따라 자동으로 호출되는 훅을 제공하여, 개발자가 컴포넌트의 각 단계에서 원하는 로직을 실행할 수 있도록 돕습니다. 라이프 사이클을 효과적으로 활용하면 더욱 유연하고 효율적인 Vue.js 애플리케이션을 개발할 수 있습니다.

 

728x90
728x90

'Vue.js 를 배워보자 > 2. Vue.js 기본 개념' 카테고리의 다른 글

컴포넌트 슬롯  (0) 2024.10.04
컴포넌트 props와 events  (0) 2024.10.04
컴포넌트 생성 및 사용  (0) 2024.10.04
데이터 감시자  (0) 2024.10.04
데이터 계산 속성  (0) 2024.10.04