一文詳解Vue選項(xiàng)式?API?的生命周期選項(xiàng)和組合式API
Vue2、Vue3 生命周期的變化
正好在看Vue的官方文檔,也正好比對(duì)一下,做一下筆記
選項(xiàng)式 API 的生命周期選項(xiàng)的變化
| Vue2.x | Vue3 |
|---|---|
| beforeCreate | beforeCreate |
| created | created |
| beforeMount | beforeMount |
| mounted | mounted |
| beforeUpdate | beforeUpdate |
| updated | updated |
| beforeDestroy | beforeUnmount |
| destroyed | unmounted |
| 新增 | |
| errorCaptured | |
| renderTracked | |
| renderTriggered |
這里我們會(huì)發(fā)現(xiàn)Vue3對(duì)Vue2的生命周期鉤子似乎沒(méi)有做大的調(diào)整
- 修改
destroyed生命周期選項(xiàng)被重命名為unmountedbeforeDestroy生命周期選項(xiàng)被重命名為beforeUnmount
- 新增
- errorCaptured:在捕獲一個(gè)來(lái)自后代組件的錯(cuò)誤時(shí)被調(diào)用。
- renderTracked:跟蹤虛擬 DOM 重新渲染時(shí)調(diào)用。
- renderTriggered:當(dāng)虛擬 DOM 重新渲染被觸發(fā)時(shí)調(diào)用。
小知識(shí)
所有生命周期鉤子的 this 上下文將自動(dòng)綁定至當(dāng)前的實(shí)例中,所以我們可以在 鉤子函數(shù)中通過(guò)this輕松訪問(wèn)到 data、computed 和 methods。
那么我有個(gè)大膽的想法!就是用箭頭函數(shù)進(jìn)行定義生命周期鉤子函數(shù),可以如期的訪問(wèn)到我們想要的實(shí)例嗎?
測(cè)試:
const app = Vue.createApp({
data() {
return {
cart: 0
}
},
mounted: () => { console.log(this.cart) },
methods: {
addToCart() {
this.cart += 1
}
}
})
app.mount("#app");

不出所望的undefined了,我們打印一下this

指向的上下文是window并不是我們的Vue實(shí)例。
至于為什么會(huì)這樣,我們可以很簡(jiǎn)單的從箭頭函數(shù)的特性來(lái)進(jìn)行一波簡(jiǎn)單的解釋:
我們?cè)诙x箭頭函數(shù)的時(shí)候,定義初就綁定了父級(jí)上下文,因?yàn)榧^函數(shù)綁定了父級(jí)上下文,所以 this 不會(huì)指向預(yù)期的組件實(shí)例,并且this.data、this.addToCart 都將會(huì)是 undefined。
組合式 生命周期選項(xiàng) API
選項(xiàng)式 API 的生命周期選項(xiàng)和組合式 API 之間是有映射關(guān)系的, 整體來(lái)看,變化不大,只是名字大部分上是on${選項(xiàng)式 API 的生命周期選項(xiàng)}
beforeCreate-> 使用setup()created-> 使用setup()beforeMount->onBeforeMountmounted->onMountedbeforeUpdate->onBeforeUpdateupdated->onUpdatedbeforeUnmount->onBeforeUnmountunmounted->onUnmountederrorCaptured->onErrorCapturedrenderTracked->onRenderTrackedrenderTriggered->onRenderTriggeredactivated->onActivateddeactivated->onDeactivated
使用:
export default {
setup() {
// mounted
onMounted(() => {
console.log('Component is mounted!')
})
}
}
VNode 生命周期事件
在查閱 Vue 的生命周期的時(shí)候,發(fā)現(xiàn)了這個(gè),說(shuō)實(shí)話我在平常業(yè)務(wù)開(kāi)發(fā)中還真沒(méi)怎么用過(guò),不過(guò)秉承著寧可多學(xué)些也不錯(cuò)過(guò)的就記錄一下吧!
Vue2x
在Vue2版本中,如果我們想要監(jiān)聽(tīng)組件內(nèi)的生命周期的階段。我們可以通過(guò) hook:${組件生命周期鉤子名稱}來(lái)進(jìn)行組件內(nèi)部的事件監(jiān)聽(tīng)。
<template> <child-component @hook:updated="onUpdated"> </template>
Vue3x
在 Vue 3 中,如果我們想要監(jiān)聽(tīng)組件內(nèi)的生命周期的階段。我們可以通過(guò) vnode-${組件生命周期鉤子名稱}來(lái)進(jìn)行組件內(nèi)部的事件監(jiān)聽(tīng)。額外地,這些事件現(xiàn)在也可用于 HTML 元素,和在組件上的用法一樣。
<template> <child-component @vnode-updated="onUpdated"> </template>
或者用駝峰命名法
<template> <child-component @vnodeUpdated="onUpdated"> </template>
以上就是一文詳解Vue選項(xiàng)式 API 的生命周期選項(xiàng)和組合式API的詳細(xì)內(nèi)容,更多關(guān)于Vue選項(xiàng)組合API生命周期的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
vue 父組件給子組件傳值子組件給父組件傳值的實(shí)例代碼
這篇文章主要介紹了vue 父組件給子組件傳值,子組件給父組件傳值,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-04-04
詳解如何使用vue實(shí)現(xiàn)可視化界面設(shè)計(jì)
Vue是一款流行的前端開(kāi)發(fā)框架,它的響應(yīng)式數(shù)據(jù)綁定和組件化特性使得它成為了可視化界面設(shè)計(jì)的一個(gè)理想選擇,本文將介紹如何使用Vue實(shí)現(xiàn)可視化界面設(shè)計(jì),并且演示一個(gè)基于Vue的可視化界面設(shè)計(jì)案例,需要的朋友可以參考下2023-12-12
vue中如何使用echarts和echarts-gl實(shí)現(xiàn)3D餅圖環(huán)形餅圖
現(xiàn)在vue是很多公司前端的主流框架,我目前所在公司接觸的項(xiàng)目也都是使用vue來(lái)實(shí)現(xiàn)的,很少有完全使用原生的JavaScript來(lái)寫項(xiàng)目的了,下面這篇文章主要給大家介紹了關(guān)于vue中如何使用echarts和echarts-gl實(shí)現(xiàn)3D餅圖環(huán)形餅圖的相關(guān)資料,需要的朋友可以參考下2023-03-03
Vue實(shí)現(xiàn)鼠標(biāo)經(jīng)過(guò)文字顯示懸浮框效果的示例代碼
這篇文章主要介紹了Vue實(shí)現(xiàn)鼠標(biāo)經(jīng)過(guò)文字顯示懸浮框效果,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
Vue Element 分組+多選+可搜索Select選擇器實(shí)現(xiàn)示例
這篇文章主要介紹了Vue Element 分組+多選+可搜索Select選擇器實(shí)現(xiàn)示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-07-07
vue實(shí)現(xiàn)添加標(biāo)簽demo示例代碼
本篇文章主要介紹了vue實(shí)現(xiàn)添加標(biāo)簽demo示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-01-01
Vue 源碼分析之 Observer實(shí)現(xiàn)過(guò)程
這篇文章主要介紹了 Vue 源碼分析之 Observer實(shí)現(xiàn)過(guò)程,Observer 最主要的作用就是實(shí)現(xiàn)了touch -Data(getter) - Collect as Dependency這段過(guò)程,也就是依賴收集的過(guò)程,感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧2018-03-03

