Vue實例在建立時有一系列的初始化步驟,例如創建數據觀察,編譯模板,建立數據綁定等。在此過程當中,咱們能夠經過一些定義好的生命週期鉤子函數來運行業務邏輯。本文將詳細介紹Vue實例的生命週期函數
下圖是Vue實例生命週期的圖示this
接下來,根據提供的生命週期鉤子,對Vue實例各個階段的狀況進行詳細說明spa
【beforeCreate】code
在實例開始初始化時同步調用。此時數據觀測、事件等都還沒有初始化blog
【created】生命週期
在實例建立以後調用。此時已完成數據觀測、事件方法,但還沒有開始DOM編譯,即未掛載到document中事件
【beforeMount】ip
在mounted以前運行文檔
【mounted】同步
在編譯結束時調用。此時全部指令已生效,數據變化已能觸發DOM更新,但不保證$el已插入文檔
【beforeUpdate】
在實例掛載以後,再次更新實例(例如更新 data)時會調用該方法,此時還沒有更新DOM結構
【updated】
在實例掛載以後,再次更新實例並更新完DOM結構後調用
【beforeDestroy】
在開始銷燬實例時調用,此刻實例仍然有效
【destroyed】
在實例被銷燬以後調用。此時全部綁定和實例指令都已經解綁,子實例也被銷燬
【activated】
須要配合動態組件keep-live屬性使用。在動態組件初始化渲染的過程當中調用該方法
【deactivated】
須要配合動態組件keep-live屬性使用。在動態組件初始化移出的過程當中調用該方法
下面寫一個簡單實例來更清楚地瞭解Vue實例內部的運行機制
<div id="example">{{message}}</div>
<script> var vm = new Vue({ el: '#example', data:{ message:'match' }, beforeCreate(){ console.log('beforeCreate'); }, created(){ console.log('created'); }, beforeMount(){ console.log('beforeMount'); }, mounted(){ console.log('mounted'); }, beforeUpdate(){ console.log('beforeUpdate'); }, updated(){ console.log('updated'); //組件更新後調用$destroyed函數,進行銷燬 this.$destroy(); }, beforeDestroy(){ console.log('beforeDestroy'); }, destroyed(){ console.log('destroyed'); }, }) </script>