主要生命周期分类
创建期间生命周期函数
- beforeCreate:实例刚在内存中被释放出来,此时,还没有初始化好data和methods属性
- created:实例已经被内存中串改创建ok,此时data和methods已经创建OK,此时还没有开始编译模板
- beforeMount:此时已经完成了模板的编译,但是还没有挂载到页面中
运行期间的生命周期函数
- beforeUpdate:状态更新之前执行此函数,此时data中的状态值是最新的,但是界面上的显示数据还是旧的,因为此时还没有开始重新渲染DOM节点
- updated:实例更新完毕之后调用次函数,此时data中的状态值和界面上显示的数据,都已完成更新,界面已被重新渲染
销毁期间生命周期函数
- beforeDestroy:实例销毁之前调用。在这一步,实例仍然完全可用
- destroy:Vue实例销毁之后调用。调用后,Vue实例指示的所有东西都会解绑定,所有的事件监听会移除,所有子实例也会被销毁
vue生命周期beforeDestroy和destroy调用
情景一:离开当前路由,会直接调用
当前路由不使用<keep-alive>
缓存,离开当前页面会直接调用deforeDstroy和destroy销毁
情景二:离开当前路由,不会被直接调用销毁,需要使用路由钩子函数主动调用
beforeRouteLeave(to, from, next) {
this.$destroy();
next();
}
使用<keep-alive>
,页面返回不让dom刷新。页面第一次进入时,钩子依次触发created -> mounted -> activated ,退出时触发deactivated。再次进入(前进或退后)时,只触发activated.