技術概述
created是一個生命周期的鈎子函數。在實例創建完成后被立即調用。在這一步,實例已完成以下的配置:數據觀測 (data observer),property 和方法的運算,watch/event 事件回調。然而,掛載階段還沒開始,$el
property 目前尚不可用。本文將探討created在使用過程中遇到的一些問題。
技術詳述
關於生命周期,用通俗的語言來說,就是Vue中實例或者組件從創建到消滅中間經過的一系列過程。而created則是一個生命周期的鈎子函數,就是一個vue實例被生成后調用這個函數。一個vue實例被生成后還要綁定到某個html元素上,之后還要進行編譯,然后再插入到document中。每一個階段都會有一個鈎子函數,方便開發者在不同階段處理不同邏輯。一般可以在created函數中調用ajax獲取頁面初始化所需的數據。
每個 Vue 實例在被創建之前都要經過一系列的初始化過程。例如,實例需要配置數據觀測(data observer)、編譯模版、掛載實例到 DOM ,然后在數據變化時更新 DOM 。在這個過程中,實例也會調用一些 生命周期鈎子 ,這就給我們提供了執行自定義邏輯的機會。例如,created 這個鈎子在實例被創建之后被調用:
var vm = new Vue({
data: {
a: 1
},
created: function () {
// `this` 指向 vm 實例
console.log('a is: ' + this.a)
}
})
也有一些其它的鈎子,在實例生命周期的不同階段調用,如 mounted、 updated 、destroyed 。鈎子的 this 指向調用它的 Vue 實例。
技術使用中遇到的問題和解決過程
mounted和created的區別
created:在模板渲染成html前調用,即通常初始化某些屬性值,然后再渲染成視圖。
mounted:在模板渲染成html后調用,通常是初始化頁面完成后,再對html的dom節點進行一些需要的操作。
通常created使用的次數多,而mounted通常是在一些插件的使用或者組件的使用中進行操作,比如插件chart.js的使用:
var ctx = document.getElementById(ID)
;
在軟件工程實踐開發的過程中,發現在created中無法對chart進行一些初始化配置,一定要等這個html渲染完后才可以進行,那么在此時果斷選擇mounted。
總結
通過了解created和mounted的區別,對生命周期鈎子有了一個更全面的了解。同時也鍛煉了編寫vue相關程序的能力。
參考鏈接: