Vue keep-alive后不能触发destroyed

article/2025/9/22 20:17:44
   <keep-alive :include="cachedViews"><router-view :key="key" /></keep-alive>

当我们在项目中配置了keep-alive后,会发现页面关闭不能触发beforeDestroy。

首先我们来看看keep-alive是什么东西

keep-alive是Vue的内置组件,当它包裹动态组件时,会缓存不活动的组件实例,而不是销毁。

它的作用不言而喻

用来缓存组件,避免多次加载相同的组件,减少性能消耗,提高用户体验。

看完如上你是不是就豁然开朗,知道为什么关闭页面不触发beforeDestroy了。总结如下:

不设置keep-alive,离开当前路由时,会调用beforeDestroydestroyed来销毁。
当设置keep-alive之后,不会直接调用这组销毁生命周期函数,而是在生命周期函数中新增两个:activateddeactivated

1.第一次进入页面时,生命周期函数执行简单来说是这样的:

2.当退出时,会触发deactivated()函数;

3.当再次进入该页面时,只会执行activated()函数。

解决方法有2种

1.直接调用deactivated

 deactivated() {clearInterval(this.timer)},

2.配合导航守卫,手动调用生命周期销毁函数

beforeRouteLeave (to, from, next) {this.destroy();next();
}

 

延伸下知识,看看keep-alive有哪些用法。

方式一:在App.vue中使用keep-alive标签,表示缓存所有页面

 <div id="app"><keep-alive><tar-bar></tar-bar><div class="container"><left-menu></left-menu><Main /></div></keep-alive></div>

方式二:按条件缓存,使用include,exclude判断是否缓存

// 1. 将缓存 name 为 cc 的组件,如果有多个,可用逗号分<keep-alive include='cc'><router-view/></keep-alive>
// 2. 将不缓存 name 为 cc 的组件<keep-alive exclude='cc'><router-view/></keep-alive>
// 3. 还可使用属性绑定动态判断<keep-alive :include='includedComs'><router-view/></keep-alive>

方式三:在router目录下的index.js中,

第一步:使用meta:{keepAlive = true },表示需要缓存

 const routes = [{path:'/',component:Home,meta:{keepalive:true}},{path:'/login',component:Login},{path:'/edit',component:Edit,meta:{istoken: true}},{path:'/home',component:Home,meta:{keepalive:true}}
]

第二步:在App.vue中进行判断

本人用的是第二种。


http://chatgpt.dhexx.cn/article/7xOKVddG.shtml

相关文章

小米开机the system has been destroyed

原因&#xff1a;可能是升级/刷机系统之时重启导致&#xff0c;也可能是刷机时选择了【全部删除并/lock】导致系统损坏&#xff0c;非硬件损坏&#xff0c;可以通过刷机解决。 解决步骤 1、解锁BL&#xff0c;登录后进行解锁。 2、解锁后刷机即可 记得点击全部删除

vue 生命周期4 销毁流程 beforeDestroy destroyed

销毁流程&#xff1a; 当调用了vm.$destroy 则触发销毁流程 验证下&#xff1a; 加一个按钮和销毁事件 效果&#xff1a; 发现点击了vm销毁,但是页面上仍不变 因为虽然vm没了但是vm的工作成果还是在的 并不是vm销毁后,它的生成的dom也销毁掉,只不过是没有人帮你去管理了 …

浏览器刷新为什么不会走销毁(beforeDestroy和destroyed)周期?

浏览器刷新为什么不会走销毁&#xff08;beforeDestroy和destroyed&#xff09;周期&#xff1f; 为什么我要写这篇博客呢&#xff0c;还有就是为什么我会问这个问题呢&#xff1f; 因为之前我遇到一个内存泄漏的问题&#xff0c;然后呢我在vue的beforeDestroy生命周期钩子函…

electron报错Error: Object has been destroyed

文章目录 问题描述解决方案 问题描述 在 Electron 中&#xff0c;当一个窗口被销毁后&#xff0c;与该窗口相关联的 JavaScript 对象也会被销毁&#xff0c;再次访问已被销毁的窗口对象时&#xff0c;会导致 Error: Object has been destroyed 错误。 例如之前在写多窗口pinia…

【解决】MissingReferenceException: The object of type ‘GameObject‘ has been destroyed 观察者模式 监听物体被销毁

MissingReferenceException: The object of type ‘Text’ has been destroyed but you are still trying to access it. Your script should either check if it is null or you should not destroy the object. 该情况发生于我的观察者模式在重新加载当前场景时 监听的物体被…

统一接口平台(一) 产品介绍

产品介绍 前端应用系统通过统一接口平台获取数据&#xff0c;不直接与外部系统接口打交道。统一接口平台通过多种方式与外部系统联接获取数据并向各前端应用系统提供各种数据格式包&#xff0c;将外部系统有效地隔离在业务系统之外。前端应用系统需要请求的外部接口需要在统一…

常见的几个接口管理平台简介

年前最后一更&#xff0c;自从Internet服务开发以来&#xff0c;作为开发者阵营&#xff0c;我们已经在实践中证明了前端和后端分离开发模型正逐渐成为越来越多的Internet公司构建服务和应用程序的一种方式。 前端和后端分离的优点很多。一个重要的优点是&#xff0c;对于后台服…

前后端对接及接口管理平台浅析

文章目录 一、接口是什么&#xff08;附带简易案例)二、Tomcat的Servlet三、json四、接口文档&#xff1a;五、管理平台 每一个完整的项目都是不是一个人的功劳&#xff0c;是一个团队的心血&#xff01;那么在这个项目从无到有的过程中&#xff0c;一个团队是如何凝聚呢&#…

如何搭建一个自己的接口自动化测试平台

0、实现方式 后端&#xff1a;java前端&#xff1a;vueelement-uimock&#xff1a;mock-server其它&#xff1a;redis 感谢大家的莅临&#xff0c;小编在文章末尾为大家准备了一些福利&#xff0c;需要的可以获取哦。 1、数据构建 ​ 我们在测试过程中发现测试数据的构建非…

6 个常用的 API 接口在线管理平台

点击关注公众号&#xff0c;架构干货及时送达 上一篇&#xff1a;腾讯开发团队又一开源利器发布&#xff01; 1.EOLINKER&#xff08;推荐&#xff09;可以协作&#xff0c;界面简洁 地址&#xff1a;https://www.eolinker.com/#/?statuslink-jump 2.RAP&#xff08;前阿里妈妈…

接口管理平台YApi坑死我了(超级详细实操教程) - 421篇

历史文章&#xff08;累计400篇文章&#xff09; 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 你真的学会了Lambda表达式了吗&#…

API接口开放平台

近期服务器不想在维护了&#xff0c;接口已经陆续开放 服务器也经常奔溃&#xff0c;一分价钱一分货 忠告&#xff1a;出了事情要学会使用法律武器保护自己 主要推荐初步入门学习的伙伴&#xff0c;可以借助这些接口丰富自己的站点 API接口包括&#xff1a; 一、资讯 全网热…

Yapi接口平台个人总结

YApi是去哪儿移动架构组开源的API管理系统&#xff0c;是一款api管理平台。 一&#xff0c;yapi相关信息与教程 官网地址&#xff1a;https://yapi.ymfe.org/ 示例地址&#xff1a;http://yapi.demo.qunar.com/ 使用教程&#xff1a;https://hellosean1025.github.io/yapi …

百度ai平台接口使用记录

前一段时间在做毕业设计&#xff0c;打算做一些风格转换相关的项目&#xff0c;想自己制作一份数据集用于训练&#xff0c;于是发现了百度ai平台提供的api接口可以实现“人脸动漫化”、“图像风格转换”等功能。按照一定步骤操作后&#xff0c;只要通过post请求就可以将本地的图…

API接口管理平台源码thinkPHP

API接口管理平台源码thinkPHP 安装步骤&#xff1a; 1.数据库信息配置在路径【config/database.php】文件中 2.导入根目录下的【data.sql】数据库文件 3.设置网站运行目录为根目录【public】 4.目录 后台地址 /admin/login.html 账户 admin 密码 123456 测试截图 后台截…

通用接口开放平台设计与实现——(2)功能架构

前面说过&#xff0c;接口开放平台主要有两部分功能组成&#xff0c;一是处于主体地位的API接口&#xff0c;对外提供数据服务&#xff1b;二是处于辅助角色的消息服务&#xff0c;用于通知数据变动。 实际上&#xff0c;客观上还需要平台自身管理功能&#xff0c;来维护平台的…

接口测试平台(一)

需求描述&#xff1a; 测试的项目使用内部加密的算法&#xff0c;普通的接口测试测试工具(Jmeter/PostMan/HttpRequest)不能满足&#xff0c;同时满足接口的自动化测试&#xff0c;用例集为1个业务场景为单位进行测试。请求方式中多一种post加密&#xff0c;同时数据比较多结构…

2022盘点工作室常用的API数据接口开发平台

果创云 果创云&#xff08;http://YesApi.cn&#xff09;&#xff0c;是一个低代码数据接口开发平台&#xff0c;为工作室提供“开箱即用”的数据API接口。 当工作室需要开发自己的小项目、脚本、小程序、管理后台时&#xff0c;可以使用果创云低代码接口平台&#xff0c;快速…

超强接口协作平台如何打造:细数Apifox的六把武器

前言&#xff1a;推荐一款免费而强大的接口协作工具&#xff0c;感兴趣的小伙伴儿自行前往官网尝鲜 1 关于接口协作平台的畅想 软件界发展至今&#xff0c;API&#xff08;接口&#xff09;的重要性日益凸显——不同的端&#xff0c;不同的模块都在通过API交互&#xff0c;不…

python 调用企查查接口平台

一、需求&#xff1a; 通过内部系统导出企业信息数据后&#xff0c;筛选状态为“正常”的企业数据。然后拿筛选后的企业去查询该企业的工商数据。 开始是在国家企业信息公示系统中查询&#xff0c;由于查询数据量过大&#xff0c;后改用从企查查接口平台&#xff0c;通过接口获…