라이프 사이클 훅(Life Cycle Hook)

모든 Vue 컴포넌트는 컴포넌트의 생성, 마운트, 업데이트, 파괴 시점마다 실행 가능한 훅(Hook) 함수를 사용할 수 있습니다.



훅 함수

라이프 사이클 훅 함수는 컴포넌트 로직 내부에 필요할 경우 등록해 사용할 수 있습니다.

export default {
  beforeCreate() {
    // 컴포넌트 생성 이전 실행 됨
  },
  created() {
    // 컴포넌트 생성 이후 실행 됨
  },
  beforeMount() {
    // 컴포넌트 마운트 이전 실행 됨
  },
  mounted() {
    // 컴포넌트 마운트 이후 실행 됨
  },
  beforeUpdate() {
    // 컴포넌트 업데이트 시작 시점에 실행 됨
  },
  updated() {
    // 컴포넌트 업데이트 완료 시점에 실행 됨
  },
  beforeDestroy() {
    // 컴포넌트 파괴 시작 시점에 실행 됨
  },
  destroyed() {
    // 컴포넌트 파괴 완료 시점에 실행 됨
  },
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

DOM 접근/조작 할 경우

컴포넌트 마운트 완료(mounted) 시점에서 실제 DOM 요소에 접근, 조작할 수 있습니다.

mounted() {
  // DOM 스크립트
  const el = document.querySelector('.el');
  el.classList.add('trigger-mounted-lifecycle-hook');
  el.addEventListener('click', e => console.log(e.target.innerHTML));
}
1
2
3
4
5
6

단, mounted 훅 함수는 모든 자식 컴포넌트가 마운트 된 상태를 보장하지 않으므로, mounted 훅 함수 내부에서 .$nextTick() 메서드를 사용해야 모든 자식 컴포넌트가 마운트 된 상태에서 코드가 실행됩니다.

mounted() {
  this.$nextTick(() => {
    // 모든 자식 컴포넌트의 마운트가 보장된 시점에서 실행 됨
    // this는 Vue 인스턴스를 참조
    this.triggerNativeEvent(this.$refs.el);
  });
}
1
2
3
4
5
6
7

참고

보다 자세한 사용법은 라이프 사이클 훅 문서를 참고하세요.