Vue生命周期

100 阅读1分钟
生命周期执行时机
beforeCreate在组件实例被创建之初、组件的属性⽣效之前被调用
created在组件实例已创建完毕。此时属性也已绑定,但真实DOM还未⽣成,$el 还不可⽤
beforeMount在组件挂载开始之前被调⽤。相关的 render 函数⾸次被调⽤
mounted在 el 被新建的 vm.$el 替换并挂载到实例上之后被调用
beforeUpdate在组件数据修改了, 视图更新之前调⽤。发⽣在虚拟 DOM 打补丁之前
updated在组件数据修改了, 视图更新之后被调用
activited在组件被激活时调⽤(使用了 <keep-alive> 的情况下)
deactivated在组件被停用时调⽤(使用了 <keep-alive> 的情况下)
beforeDestory在组件销毁前调⽤ (销毁: vue默认会进行释放掉实例所有的监听, 释放掉所有的组件...)
destoryed在组件销毁后调⽤ (像定时器, webscoket连接, ... 跟vue没有太大关联的资源, 需要手动释放!)

父子两个组件,生命周期执行顺序是什么

  1. 创建:父beforeCreate,父created,父beforeMount,子四个,父mounted
  2. 更新阶段:父beforeUpdate,子beforeUpdate,updated,父updated
  3. 销毁阶段:父beforeDestory,子beforeDestory,destoryed,父destoryed

为什么要在destoryed中销毁定时器(eventloop)

因为定时器在任务队列中,所以不会被自动清空