Lifecycle이란 Vue 인스턴스나 컴포넌트가 생성되고 소멸되기까지의 단계를 말한다.
그리고 각 단계에서 실행되는 함수들을 Lifecycle Hook이라고 부른다.

템플릿 코드 )
<!-- 배너광고 -->
<DiscountBanner v-if="showDiscountValid === true" />
스크립트 코드 )
data(){
return{
showDiscountValid: false,
}
},
mounted() {
setTimeout(() => {
this.showDiscountValid = true;
}, 2000);
},
🙋🏻♂️ 라이프사이클 훅의 사용법은 데이터나 함수 상자를 만드는 것과 비슷하다.
- "원하는 단계의 훅의 이름" + ( ){ "내용물" }
배너를 보여 줄 boolean의 자료형태인 showDiscountValid를 데이터 상자에 초깃값은 false로 선언 해 주었다.
그런다음 템플릿의 <DiscountBanner> 컴포넌트를 v-if를 통해여 true일 때 보여주는 조건부 랜더링을 하였다.
마지막으로 mounted 훅을 사용하여 setTimeout()를 이용해 2초 뒤, showDiscountValid 값을 true로 바꿧다.
템플릿 코드 )
<template>
<!-- 배너 광고 -->
<div class="discount">
<h4>지금 결제하시면, {{ percent }}% 할인!!</h4>
</div>
</template>
스크립트 코드 )
export default {
name: "DiscountBanner",
data() {
return {
percent: 10,
};
},
mounted() {
var timer = setInterval(() => {
this.percent--;
if (this.percent == 0) {
// timer라는 변수에 담아서 clearInterval 함수로 종료
clearInterval(timer);
}
}, 1000);
},
};
초깃값 10의 percent 를 선언하여, 템플릿의 할인 문구에 바인딩 하였다.
🙋🏻♂️ 부모 -> 자식 순서로 mounted 훅이 실행된다는 걸 잊지말자!
setInverval() 를 timer 라는 변수에 담고, if문을 통해 percent 값이 0의 조건으로 timer를 꺼주는 clearInterval() 을 사용했다.
