學(xué)習(xí)vue的生命周期
什么是生命周期函數(shù)薛耻?
vue的生命周期函數(shù)(又稱為鉤子函數(shù))是一個vue實例從開始創(chuàng)建营罢,到初始化數(shù)據(jù),到渲染掛起饼齿,到卸載的整個過程饲漾,類比人的生命周期,人的一生從出生缕溉,到成年能颁,到中年,到老年倒淫,到去世,分了幾個階段败玉,而vue的生命周期也分了好幾段敌土,分別是beforCreate,created运翼,beforeMount返干,mounted,beforeUpdate血淌,updated矩欠,beforeDestroy财剖,destroyed。
為什么需要生命周期函數(shù)癌淮?
方便使用者在vue實例一些階段進行一些操作躺坟,比如進行一些數(shù)據(jù)的初始化,或者渲染完dom后乳蓄,可以初始化echarts圖表等咪橙。
正文
先放官網(wǎng)的圖壓壓驚
從圖中可以看出,vue的生命周期大概包括下面幾個鉤子
beforCreate(初始化界面前)
created(初始化界面后)
beforeMount(渲染dom前)
mounted(渲染dom后)
beforeUpdate(更新數(shù)據(jù)前)
updated(更新數(shù)據(jù)后)
beforeDestroy(卸載組件前)
destroyed(卸載組件后)
beforeCreate(初始化界面前)
在beforeCreate時虚倒,進行了一些事件的初始化以及生命周期函數(shù)初始化美侦。
created(初始化界面后)
主要進行了數(shù)據(jù)的初始化,如data里面的數(shù)據(jù)初始化魂奥。所以菠剩,在created之后,才可以使用vue實例的data耻煤。而在beforeCreate()時是不可以調(diào)用data的具壮,實操如下
例子:
上面代碼是在beforeCreate()和created()兩個生命周期函數(shù)中輸出messge的信息。
結(jié)果如下:
beforeMount
將vue掛載到dom违霞,將模板編譯出來嘴办,將template編譯成瀏覽器認(rèn)識的模式,但dom元素還不能看到
mount
主要進行渲染买鸽,就是將dom元素渲染出來涧郊,讓我們可以進行操作。我們舉個例子來認(rèn)識beforeMount和mount的區(qū)別
例子
輸出結(jié)果:
beforeUpdate
數(shù)據(jù)更新前
updated
數(shù)據(jù)更新后
update和beforeUpdate比較簡單就不舉例子了眼五。
beforeDestroy
實例銷毀前
destroy
實例銷毀后
例子
簡單解釋一下例子妆艘,例子中是注冊一個叫component-text的子組件,然后通過v-if的特性(為true是渲染dom看幼,false是銷毀dom)來實現(xiàn)組件的創(chuàng)建和銷毀批旺。而控制改變v-if的值我們通過一個監(jiān)聽按鈕點擊事件的功能。
結(jié)果如下
上面是頁面一開始渲染完成后诵姜,v-if為true時汽煮,輸出臺沒有任何輸出
上面是點擊按鈕后,v-if為false時棚唆,組件被銷毀暇赤,輸出臺輸出了銷毀前和銷毀后的兩個信息。