vue的生命周期钩子

167 阅读1分钟
  • beforeCreate
     vue实例刚初始化的时候,还没有进行数据观测及event/wathcer事件配置(无法访问data, methods, watcher等,但是可以访问$router$route)
  • created
     实例初始化完成,此时能够访问data, methods, watcher,可以在此钩子函数发送请求,改变数据,此时还未挂载DOM,无法访问$el
  • beforeMount
    DOM挂载前调用,render函数被首次调用,生成virtual-DOM,无法访问$el
  • mounted
    DOM挂载完成,生成$el并替换el,此时可以进行依赖DOM的操作,可以访问$el
  • beforeUpdate
     数据更新后调用,此时可以进一步更改数据,并不会触发重渲染
  • updated
    virtual-DOM重新渲染和打补丁后调用,组件DOM已经更新
  • beforeDestroy
     实例销毁前调用,此时实例完全可用,可以清除定时器
  • destroy
     实例销毁后调用,此时也可以清除定时器
  • activated
     被keep-alive缓存的组件激活时调用,可以在此时对组件中的数据进行更新
  • deactivated
     被keep-alive缓存的组件停用时调用
  • errorCaptured
     捕获到子组件错误时调用,会收到三个参数: 错误对象, 出错的组件实例, 包含错误来源信息的字符串,可以返回false以阻止错误继续向上传递

面试题: 父组件和子组件初次渲染时,父,子组件生命周期调用顺序是什么?

  • $parent: beforeCreate
  • $parent: created
  • $parent: beforeMount(此时父组件虚拟DOM已经渲染好,需要挂载真实DOM,所以此时去加载子组件)
  • $children: beforeCreate
  • $children: created
  • $children: beforeMount
  • $children: mounted(子组件生成真实DOM后,父组件挂载完成,父组件mounted钩子触发)
  • $parent: mounted