在前端开发中,生命周期函数是指在组件创建、更新、销毁等阶段触发的一系列函数。这些函数可以帮助开发者在不同的阶段进行必要的操作,比如初始化数据、监听事件、处理异步请求等。下面我简要介绍一下前端生命周期函数的内容:
-
创建阶段:
beforeCreate
: 在实例初始化之后,数据观测 (data observer) 和 event/watcher 事件配置之前被调用。created
: 实例已经创建完成之后被调用。在这一步,实例已完成数据观测,属性和方法的运算,watch/event 事件回调。然而,挂载阶段还没开始,$el 属性目前不可见。
-
挂载阶段:
beforeMount
: 在挂载开始之前被调用:相关的 render 函数首次被调用。mounted
: el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用该钩子。
-
更新阶段:
beforeUpdate
: 数据更新时调用,发生在虚拟 DOM 重新渲染和打补丁之前。updated
: 由于数据更改导致的虚拟 DOM 重新渲染和打补丁后调用。
-
销毁阶段:
beforeDestroy
: 在实例销毁之前调用。在这一步,实例仍然完全可用。destroyed
: 在实例销毁之后调用。调用后,所有的事件监听器会被移除,所有的子实例也会被销毁。
生命周期函数在不同的阶段执行不同的任务,开发者可以根据实际需求来选择合适的生命周期函数进行操作。例如,在
created
阶段可以进行数据初始化和异步请求操作,在mounted
阶段可以进行 DOM 操作等。合理利用生命周期函数可以提高代码的可维护性和可扩展性,更好地管理组件的生命周期。
总结一下
beforeCreate created beforeMount mounted beforeDestroy destoryed这些钩子都只执行一次;
beforeUpdate updated第一次构建不会调用,以后每次data被更新了就会调用;
beforeDestroy destroyed 销毁的方式有两种:用户关闭和代码this.$destroy()//销毁vm实例。
只有beforeUpdate updated运行时不能做网络请求;
我们一般把网络请求放在created或者mounted中,具体的根具业务需求来;
放在created:因为有时候我们希望异步的网络请求和vm的挂载同时进行 体现出CPU多核的优势 放在mounted:因为有时候我们希望本地的UI骨架已经加载完毕以后再去请求数据刷新UI