首页 > 其他分享 >若依关闭页签不会销毁 keep-alive 缓存的组件

若依关闭页签不会销毁 keep-alive 缓存的组件

时间:2023-12-22 15:56:26浏览次数:26  
标签:缓存 alive keep 销毁 签时 组件 view

问题场景

使用 keep-alive 缓存的组件。离开该页签时,组件状态为 inactive;点击该页签时,组件状态为 active

点击按钮关闭该页签 this.$tab.closePage(view),该组件被销毁。

image


需求:在页面A中删除数据B,则之前点击数据B打开的页签C会被关闭(使用 this.$tab.closePage(view))。

该需求已实现,但有个问题是:同样调用了 this.$tab.closePage(view),但是却无法销毁该组件。原因不明。

image


问题:因为没有销毁组件,导致旧数据没有被重置,新建数据M,点击数据M打开页签N时,会继续使用旧数据,导致页面加载报错。

解决

解决思路:在A页面删除数据时,关闭对应页签的同时要销毁对应组件。

方案一:deactive() 钩子中销毁组件

在页签组件 StandardVersion 中添加以下代码:

  deactivated() {
    this.$destroy();
  },

由于离开页签时,销毁了组件,那么再次点击页签时,会调用 created() 函数生成组件实例(会重新请求数据)。

缺点:keep-alive 缓存失去作用。

方案二(推荐):该组件不设置 keep-alive

既然方案一会让 keep-alive 失去作用,那干脆不设置 keep-alive。

页签组件 StandardVersion 的路由是在 router.js 中书写的,直接在 meta 选项中设置 noCache: true 即可。

image

总结

如果能找到:同样调用了 this.$tab.closePage(view),但是却无法销毁该组件的原因,就不用采取上述解决方案。

标签:缓存,alive,keep,销毁,签时,组件,view
From: https://www.cnblogs.com/shayloyuki/p/17921558.html

相关文章

  • Zookeeper-快速入门、服务搭建、集群搭建教程
    官网:https://zookeeper.apache.org/zookeeper常用用途:集群管理,zookeeper作为注册中心,管理服务提供方的ip地址端口号url信息,并在服务消费方请求需要时发送给服务消费方。配置中心(不过一般用阿波罗apollo或者阿里的Nacos来做)多个app中的配置是从zookeeper中拉取配置,而不是一个......
  • DataSophon更换zookeeper版本
    DataSophon更换zookeeper版本平台默认集成的zookeeper版本为:zookeeper-3.5.10.tar.gz更换为:zookeeper-3.8.0.tar.gz下载地址:https://archive.apache.org/dist/zookeeper/zookeeper-3.8.0/apache-zookeeper-3.8.0-bin.tar.gz修改服务service_ddl.json配置{"name":"ZOOKEE......
  • 彻底清除Chrome、Firefox、Edge、Safari等浏览器的缓存文件
     浏览器的缓存,是存储在硬盘驱动器或手机/平板电脑存储中的网页集合。缓存包括你访问过的网页上包含的文本、图像和大多数其他媒体。拥有网页的本地副本可以在下次访问时快速加载,因为你的计算机或移动设备不必再次从互联网下载。然而,随着时间的推移,缓存可能会占用计算机存......
  • keepass口令管理实践
    目录一、下载安装KeePassXC下载安装二、创建数据库三、新建密码条目一、下载安装KeePassXC下载老师给的参考文件主要针对Windows系统,因为我用的是MacOS系统,所以我查阅资料,最终选择下载KeepassXC。GettingKeePass-Downloads下拉找到KeePassXC(forLinux/MacOS)安装二、......
  • 微服务广播模式实践:维护内存数据的缓存一致性
    本文分享自华为云社区《微服务广播模式实践》,作者:张俭。微服务广播模式,指的是在微服务多实例部署的场景下,将消息广播到多个微服务实例的一种模式。广播模式,一般用来维护微服务的内存数据,根据数据类型的不同,有助于解决两类问题。通常广播模式会使用支持发布订阅的消息中间件实......
  • Guava自加载缓存LoadingCache使用指南
    第1章:引言大家好,我是小黑,今天我们来聊聊缓存。在Java世界里,高效的缓存机制对于提升应用性能、降低数据库负担至关重要。想象一下,如果每次数据请求都要跑到数据库里取,那服务器岂不是要累趴了?这时候,缓存就显得尤为重要了。那么,怎么实现一个既高效又好用的缓存呢?别急,咱们今天的主......
  • 分布式缓存NewLife.Redis
    NewLife.Redis 是一个Redis客户端组件,以高性能处理大数据实时计算为目标。Redis协议基础实现位于Redis/RedisClient,FullRedis为扩展实现,主要增加列表结构、哈希结构、队列等高级功能。源码: https://github.com/NewLifeX/NewLife.RedisNuget:NewLife.Redis/NewLife.Extens......
  • 《Java架构师的第一性原理》32分布式计算之分布式缓存第3篇LevelDB
    互联网业务,绝大部分场景,会使用缓存服务。但有时候,确实会使用到进程内存缓存/数据库,这个时候,LevelDB就能派上用场了。啥是LevelDB?LevelDB是Google开发的,一个速度非常块的KV存储库(storagelibrary),它支持字符串的key与字符串的value,并且这种映射关系按key排序(orderedmapping)。L......
  • 《Java架构师的第一性原理》32分布式计算之分布式缓存第1篇如何使用Redis搭建玩家排行
    今天我们用Redis搭建一个玩家的排行榜,假设一个服务器存储了10万名玩家的数据,我们想给这个区(这台服务器)上的玩家做个全区的排名,该如何用Redis实现呢?不妨一起来思考下面几个问题:MySQL是如何实现玩家排行榜的?有哪些难题需要解决?如何用Redis模拟10万名玩家数据?Redis里......
  • 《Java架构师的第一性原理》32分布式计算之分布式锁(Redis、Zookeeper)
    1 这才是真正的分布式锁技术领域,我觉得了解来龙去脉,了解本质原理,比用什么工具实现更重要:(1)进程多线程如何互斥?(2)一个手机上两个APP访问一个文件如何互斥?(3)分布式环境下多个服务访问一个资源如何互斥?归根结底,是利用一个互斥才能访问的公共资源来实现分布式锁,具体这个公共资源是r......