官网生命周期图:

Vue生命周期的理解

vue有8种生命周期函数:

钩子函数 触发的行为 在此阶段可以做的事情
beforeCreadted vue实例的挂载元素$el和数据对象data都为undefined,还未初始化。 加loading事件
created vue实例的数据对象data有了,但是DOM还未生成,$el还没有 结束loading、请求数据为mounted渲染做准备
beforeMount vue实例的$el和data都初始化了,但还是虚拟的dom节点,具体的data.filter还未替换。  
mounted vue实例挂载完成,data.filter成功渲染 配合路由钩子使用
beforeUpdate data更新时触发  
updated data更新时触发

 数据更新时,做一些处理 (此处也可以用watch进行观测)

beforeDestroy 组件销毁时触发  
destroy 组件销毁时触发,vue实例解除了事件监听以及和dom的绑定(无响应了),但DOM节点依旧存在 组件销毁时进行提示

组件套用时生命周期:

1. 先执行父组件的created和beforeMounted函数;

2.再按子组件的使用顺序,执行子组件的created和beforeMounted函数;

3.依旧按照子组件的执行顺序执行mounted函数,最后是父组件的mounted函数;


也就是说父组件准备要挂载还没挂载的时候,子组件先完成挂载,最后父组件再挂载;所以在真正整个大组件挂载完成之前,内部的子组件和父组件之间的数据是可以相互传递的,可获取并使用

场景

  • beforecreate : 可以在这加个loading事件
  • created :在这结束loading,进行ajax请求异步数据的获取、初始化数据
  • mounted : 挂载元素dom节点的获取(eg:echarts初始化)
  • updated:任何数据的更新,如果要做统一的业务逻辑处理
  • beforeDestroy: 你确认删除XX吗?
  • destroyed :当前组件已被删除,清空相关内容
  • (好像接下来混入了其他奇怪的东西)
  • nextTick:针对单一事件更新数据后立即操作dom
  • watch:监听数据变化,并做相应的处理

 

相关文章: