SeouliteLab

[Vue.js] deactivated: 컴포넌트 비활성화 시 실행되는 훅 이해하기 본문

카테고리 없음

[Vue.js] deactivated: 컴포넌트 비활성화 시 실행되는 훅 이해하기

Seoulite Lab 2024. 4. 26. 08:24

 

1. 개요

Vue.js에서 deactivated 훅은 keep-alive 컴포넌트가 비활성화될 때 호출되는 라이프사이클 훅입니다. 컴포넌트 개발자는 이 훅을 사용하여 컴포넌트가 비활성화될 때 필요한 작업을 수행하거나 데이터를 정리할 수 있습니다.

deactivated 훅은 다음과 같은 상황에서 호출됩니다.

  • keep-alive 컴포넌트가 다른 컴포넌트로 인해 비활성화될 때
  • keep-alive 컴포넌트가 메모리 부족으로 인해 비활성화될 때

2. deactivated 훅 사용 예시

다음은 deactivated 훅을 사용하는 예시입니다.

HTML
<template>
  <div>
    <h2>{{ title }}</h2>
    <p>{{ content }}</p>
  </div>
</template>

<script>
export default {
  name: 'MyComponent',
  data() {
    return {
      title: '제목',
      content: '내용',
    };
  },
  deactivated() {
    // 컴포넌트 비활성화 시 수행할 작업을 여기에 작성합니다.
    console.log('컴포넌트가 비활성화되었습니다!');

    // 데이터 정리
    this.title = '';
    this.content = '';
  },
};
</script>

<style scoped>
/* 스타일 정의 */
</style>
 

설명:

  • deactivated 훅은 keep-alive 컴포넌트가 비활성화될 때 호출됩니다.
  • 훅 내에서 컴포넌트 비활성화 메시지를 콘솔에 출력합니다.
  • 컴포넌트 데이터 속성인 title과 content를 빈 문자열로 초기화하여 데이터를 정리합니다.

3. deactivated 훅의 장점

deactivated 훅을 사용하면 다음과 같은 장점을 얻을 수 있습니다.

  • 컴포넌트 비활성화 시 작업 수행: 컴포넌트가 비활성화될 때 필요한 작업을 수행할 수 있습니다. 예를 들어, 이벤트 제거, 리소스 해제, 데이터 저장 등을 수행할 수 있습니다.
  • 데이터 정리: 컴포넌트가 비활성화될 때 데이터를 정리하여 메모리 사용량을 줄일 수 있습니다.
  • 성능 향상: 컴포넌트가 비활성화된 후에도 불필요한 작업을 수행하지 않도록 하여 성능을 향상시킬 수 있습니다.

4. 주의 사항

  • deactivated 훅은 keep-alive 컴포넌트에서만 사용할 수 있습니다. 일반 컴포넌트에서는 사용할 수 없습니다.
  • deactivated 훅은 컴포넌트가 완전히 DOM에서 제거되기 전에 호출됩니다.
  • deactivated 훅은 컴포넌트 렌더링 과정에 영향을 미치지 않습니다. 렌더링 과정 중에 수행해야 하는 작업은 다른 훅을 사용해야 합니다.

5. deactivated 훅과 함께 사용할 수 있는 다른 훅

  • activated: keep-alive 컴포넌트가 활성화될 때 호출됩니다.
  • beforeEnter: keep-alive 컴포넌트가 활성화되기 직전에 호출됩니다.
  • beforeLeave: keep-alive 컴포넌트가 비활성화되기 직전에 호출됩니다.