不设置keep-alive
,离开当前路由时,会调用beforeDestroy
和destroyed
来销毁。
当设置keep-alive
之后,不会直接调用这组销毁生命周期函数,而是在生命周期函数中新增两个:activated
和deactivated
。
- 第一次进入页面时,生命周期函数执行简单来说是这样的:
![在这里插入图片描述](https://img-blog.csdnimg.cn/c5c58030dbbd4cceae51d5859e4a1ad0.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5p-S5Liq5qmZ5a2Q,size_20,color_FFFFFF,t_70,g_se,x_16)
- 当退出时,会触发
deactivated()
函数; - 当再次进入该页面时,只会执行
activated()
函数。
配合导航守卫,手动调用生命周期销毁函数
beforeRouteLeave (to, from, next) {
this.destroy();
next();
}