框架篇-面试题6-说一下Vue2与Vue3的钩子函数

框架篇-面试题6-说一下Vue2与Vue3的钩子函数_第1张图片

Vue钩子函数是在Vue实例从创建到销毁的过程中自动执行的函数(在特定的阶段,能够自动自执行的函数)

钩子函数用来描述一个组件从引入(创建)到退出(销毁)的全过程中的某个过程

Vue2生命周期钩子函数

整个过程称为生命周期Vue钩子函数按照组件生命周期的过程分为挂载阶段,更新阶段和销毁阶段

  1. beforeCreate():在new一个Vue实例后,只有一些默认的生命周期钩子和默认事件,其他的东西都还没创建,在此生命周期执行的时候,datamethods中的数据都没有初始化

  2. created():在示例创建完成之后,数据已经准备好,但是挂载DOM节点还没有开始,此时无法访问DOM节点

  3. beforeMount():在挂载开始之前被调用,render函数首次被调用,在此时,模板编译成了render函数,但是还没有渲染成真实的DOM节点

  4. mounted():在挂载完成后被调用,此时DOM节点已经全部渲染完毕,可以在这个钩子函数中操作DOM节点,例如获取元素的大小和位置等

  5. beforeUpdate():在数据更新之前被调用,可以在此时对更新前的数据进行操作,但此时还无法访问到更新后的数据

  6. updated():在数据更新后被调用,DOM已经被重新渲染,可以在此时对DOM进行操作,但是需要注意避免无限循环的情况

  7. beforeDestory():在实例销毁之前被调用,可以在此时进行一些清理工作,例如:清除定时器或取消事件监听等

  8. destroyed():在实例销毁之后被调用,此时实例中的所有东西都已经被销毁,无法在访问到实例中的数据和方法

在父子组件中,钩子函数的执行顺序如下所示

  • 挂载阶段: 父beforeCreate > 父created > 子beforeCreate > 子created > 子beforeMount > 子mounted > 父mounted

  • 更新阶段:父beforeUpdate > 子beforeUpdate > 子updated >父updated

  • 销毁阶段: 父beforeDestory > 子beforeDestory > 子destoryed > 父destoryed

总之,Vue钩子函数是,在特定阶段,能够自动执行的函数,例如:在数据更新后对DOM进行操作或在实例销毁前进行一些清理工作

Vue3生命周期钩子函数

Vue3的生命周期钩子函数和Vue2的生命周期选项是很相似的,但是Vue3中的生命周期钩子函数被命名为“钩子”,并且使用了Composition API的方式来实现。以下是Vue3的钩子函数:

setup():在组件创建之前执行,相当于Vue2中的beforeCreatecreated钩子函数,用于创建组件的datamethod,它是在beforeCreate之前就执行了的

  • onBeforeMount():在组件挂载到节点上之前执行的函数,相当于Vue2中的beforeMount钩子函数。

  • onMounted():在组件挂载完成后执行的函数,相当于Vue2中的mounted钩子函数。

  • onBeforeUpdate():在组件更新之前执行的函数,相当于Vue2中的beforeUpdate钩子函数。

  • onUpdated():在组件更新完成之后执行的函数,相当于Vue2中的updated钩子函数。

  • onBeforeUnmount():在组件卸载之前执行的函数,相当于Vue2中的beforeDestroy钩子函数。

  • onUnmounted():在组件卸载完成后执行的函数,相当于Vue2中的destroyed钩子函数。 onActivated():在组件被包含在中,并且被激活时执行。除了以上的钩子函数之外,Vue3还提供了一些额外的钩子函数,如onRenderTriggeredonRenderTracked,用于在开发过程中进行调试。

Vue3中,可以使用

你可能感兴趣的:(vue.js,javascript,前端,ecmascript,前端框架)