1. vue對象的生命周期
1). 初始化顯示(只執行一次)
* beforeCreate()
* created()
* beforeMount()
* mounted()
2). 更新狀態(可執行多次)
* beforeUpdate()
* updated()
3). 銷毀vue實例: vm.$destory()(只執行一次)
* beforeDestory()
* destoryed()
2. 常用的生命周期方法
created()/mounted(): 發送ajax請求, 啟動定時器等異步任務
beforeDestory(): 做收尾工作, 如: 清除定時器
前幾天剛開始學vue就碰到了vue里面的坑,在vue生命周期的mounted使用定時器,用了匿名函數作為回調函數,結果沒有任何效果,代碼入下
<div id="test">
<button>vue的生命周期</button>
<p v-show="isShow">你是佩奇嗎</p>
</div>
<script type="text/javascript" src="../js/vue.js"></script>
<script>
new Vue({
el:'#test',
data:{
isShow:true
} ,
mounted() {
setInterval(function (){
this.isShow=!this.isShow;
},1000)
}
});
</script>
查閱了一下,發現下面這種寫法,存在一個問題,當前this指向的是當前的定時器positionTimer
mounted() {
setInterval(function (){
this.isShow=!this.isShow;
},1000)
}
使用了lambda表達式(箭頭函數)替換匿名函數的寫法,當前this指向的是外部的vue對象
mounted() {
setInterval(()=>{
this.isShow=!this.isShow;
},1000)
效果顯示正常,如有大咖有更通俗的解釋,望糾正指教,謝謝

