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()
을 사용했다.