Vue 的生命周期 钩子函数 是 异步的吗?

Vue 的生命周期 钩子函数 是 异步的吗?

今天调用 钩子函数 (onBeforeMount) 时 在里面用 log(53行) 输出内容,同时在后面也用 log (56行,此不在钩子函数内)输出 ,后面的log竟然比 钩子函数 中的 log 先输出了
let originEventData = []

// 调用 生命周期函数
onBeforeMount(()=>{
  originEventData = getEventData()
  console.log('onBeforeMount',originEventData)  //53行 
})

console.log(originEventData,currentEventData) //56行
输出结果

为什么 是 56行先输出了呢?

img

钩子函数不是异步,每个钩子函数都有它执行的顺序,例如vue2中有 created钩子,它是在vue实例化之后运行的,mounted是在dom挂载后运行的,在两个函数中同时输出一个log,不管你的mounted放到哪里都是created先执行
同理vue3移除了created钩子,在step中的操作就相当于vue2的created了,所以你的56行会比53行先执行,因为这是vue钩子函数的执行机制

请看👉 :Vue生命周期钩子的理解
你还可以看下vuejs参考手册中的 vue.js 生命周期