谈谈你对vue生命周期的理解:(面试题)
只要是组件都会存在生命周期的
生命周期钩子函数: 钩子函数会自动执行的
vue2 :
创建阶段 beforeCreate() / created()
挂载阶段 beforeMount() / mounted()
更新阶段 beforeUpdate() / updated()
销毁阶段 beforeDestroy() / destroyed()
vue3 :
创建阶段 beforeCreate() / created()
挂载阶段 beforeMount() / mounted()
更新阶段 beforeUpdate() / updated()
销毁阶段 beforeUnmount() / unmounted()
beforeCreate()
在实例初始化之后、进行数据侦听和事件/侦听器的配置之前同步调用。 不能访问data methods 等
created()
在实例创建完成后被立即同步调用。在这一步中,实例已完成对选项的处理,意味着以下内容已被配置完毕:数据侦听、计算属性、方法、事件/侦听器的回调函数。然而,挂载阶段还没开始,且 $el property 目前尚不可用
beforeMount()
在挂载开始之前被调用:相关的 render 函数首次被调用。
mounted()
在实例挂载完成后被调用,这时候传递给 app.mount 的元素已经被新创建的 vm.$el 替换了
beforeUpdate()
在数据发生改变后,DOM 被更新之前被调用。这里适合在现有 DOM 将要被更新之前访问它,比如移除手动添加的事件监听器
updated()
在数据更改导致的虚拟 DOM 重新渲染和更新完毕之后被调用。
beforeUnmount()
在卸载组件实例之前调用。在这个阶段,实例仍然是完全正常的。
unmounted()
卸载组件实例后调用。调用此钩子时,组件实例的所有指令都被解除绑定,所有事件侦听器都被移除,所有子组件实例被卸载。