Vue 实例有不同的生命周期钩子函数,这些函数允许你在 Vue 实例不同阶段执行代码。这些生命周期钩子函数按照执行顺序可分为三个阶段:
第一阶段:实例初始化
-
beforeCreate:
在实例初始化之后,数据观测 (data observer) 和事件配置 (event watchers) 之前被调用。此时,实例的属性和方法还未初始化。 -
created:
实例已经完成了数据观测,属性和方法的初始化,但挂载阶段还未开始,DOM 尚未生成。可以在这里进行数据的初始化等操作。
第二阶段:模板编译/挂载前
- beforeMount:
在挂载开始之前被调用,相关的 render 函数首次被调用。在此时,模板编译为虚拟 DOM,但尚未挂载到页面上。
第三阶段:模板编译/挂载后
- mounted:
实例被挂载后调用,el 被新创建的 vm.$el 替换,并挂载到实例上去后调用该钩子。DOM 已经渲染完成,可以执行操作DOM、进行网络请求等操作。
第四阶段:更新
-
beforeUpdate:
数据更新时调用,发生在虚拟 DOM 重新渲染和打补丁之前。可以在该钩子中进一步地更改数据,不过避免直接修改数据,以免进入无限循环。 -
updated:
数据更新完成时调用,虚拟 DOM 重新渲染和打补丁后调用。此时组件已经更新完毕,可以执行一些需要使用更新后的 DOM 的操作。
第五阶段:销毁
-
beforeDestroy:
实例销毁之前调用。在这一步,实例仍然完全可用,可以进行善后处理,比如清除定时器、取消事件监听等。 -
destroyed:
实例销毁后调用。在这一步,Vue 实例的所有指令已经解绑,所有事件监听器已经移除,所有子实例也已经被销毁。
理解这些生命周期函数可以帮助你更好地管理 Vue 实例的状态和行为。例如,在 created
钩子中可以初始化数据,在 mounted
中可以执行与 DOM 相关的操作,在 beforeDestroy
中进行资源清理等。
Was this helpful?
0 / 0