Vue2.x的生命周期

157 阅读1分钟

Vue2.x的生命周期

Vue一旦创建好实例就会拥有完整的生命周期

  1. beforeCreate(创建前):所有的东西都没有开始,此时data的响应式追踪、event/watcher都没有被设置,即无法访问到datacomputedwatchmethods上的方法和数据
  2. created(创建后):此时实例已经创建完成了,实例上配置的options包括datacomputedwatchmethods等配置都已完成,但是此时渲染的节点还未挂载到DOM,所以不能访问到$el
  3. beforeMount(挂载前):实例的配置都已经完成,data里面的数据已经生成模板html。但是html还没有挂载到html页面上
  4. mounted(挂载后):el被新创建的vm.$el替换,并在实例挂载上去之后调用,模板中的html完成渲染到html页面中
  5. beforeUpdate(更新前):响应式数据更新时调用,虽然响应式数据更新了,但是对应的真实DOM还没有被更新
  6. updated(更新后):由于数据更改导致虚拟DOM重新渲染和打补丁(patch)之后调用,可以进行依赖于DOM的操作;应该尽可能的避免在此钩子更改状态,有可能到导致无限循环更新
  7. beforeDestroy(销毁前):实例销毁之前调用,这里的实例仍然可用,this仍然可以获取到
  8. destroyed(销毁后):实例销毁后调用,调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。该钩子在服务端渲染期间不被调用。

另外keep-alive也提供了一下生命周期

  1. activated:被 keep-alive 缓存的组件激活时调用。
  2. deactivated:被 keep-alive 缓存的组件失活时调用。
  3. errorCaptured:在捕获一个来自后代组件的错误时被调用。