Vue动态缓存KeepAlive

vue中keep-alive组件主要有三个常用的props。

  • 1,include存放的name是组件自身的name属性,只有名称匹配的组件会被缓存
  • 2,exclude,任何名称匹配的组件都不会被缓存
  • 3,max,最多可以缓存多少组件实例,一旦达到这个数字,那么缓存组件中最近没有被缓存的实例会被销毁

这里使用 include 属性实现动态缓存,include 有3种传值方式:

  1. ‘组件A的name,组件B的name’
  2. ‘正则表达式1,正则表达式2’
  3. ‘[组件A的name,组件B的name]’

实际开发过程中一般配合vue-router食用:

<keep-alive :include="aliveRoutes">

        <router-view></router-view>

</keep-alive>

思路:通过将 aliveRoutes 加入Vuex进行状态管理,然后通过actions来动态改变aliveRoutes。具体实现如下:

// store/async-router.js
state: {...aliveRoutes: []    
},
mutations: {UPDATE_ALIVE_ROUER: (state, data) => {state.aliveRoutes = data},
},
actions: {...addAliveRouter({ commit, state }, routerName) {if (!routerName) returnconst originData = state.aliveRoutes || []originData.push(routerName)const arr = Array.from(new Set(originData))commit('UPDATE_ALIVE_ROUER', arr)},delAliveRouter({ commit, state }, routerName) {const originData = state.aliveRoutes || []const index = originData.indexOf(routerName)if (!routerName || index === -1) returnoriginData.splice(index, 1)commit('UPDATE_ALIVE_ROUER', originData)},
}
// xxx.vue...export default {
name: 'componentA', // 注意name需要与 aliveRoutes 中保持一致beforeRouteLeave(to, from, next) {next()// 判断如果返回首页则移除keepalive 否则保持缓存if (to.path === 'index') {// 移除 aliveRoutes 中的 componentA this.$store.dispatch('delAliveRouter', 'componentA')}},
created() {
// 初始化时增加 componentA 到 aliveRoutes this.$store.dispatch('addAliveRouter', 'componentA')
},
...
}

在初始化路由时可以将路由中需要缓存的组件的name添加到 aliveRoutes  中

import store from '@/store'// 加载默认需要keep alive的路由
allRoutes.forEach(route => {const { meta, name } = routeif (meta && meta.keepAlive) store.dispatch('addAliveRouter', name)
})...

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/709861.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

delete误删基表(seg$)bbed恢复cluster table

有客户通过delete误删了sys.seg$表的数据&#xff0c;重启数据库&#xff0c;发现数据库不能正常启动。 删除命令&#xff1a;delete from sys.seg$ t where ts#2; 数据库启动报错 Errors in file /u01/app/diag/rdbms/orcl/orcl/trace/orcl_ora_48064.trc (incident325391)…

【蓝桥杯入门记录】动态数码管例程

目录 &#xff08;1&#xff09;例程1&#xff1a;两个数码管显示不同内容。本例以第一个数码管显示数字“0”&#xff0c;第二个数码管显示数字“1”为例。 &#xff08;2&#xff09;例程2&#xff1a;多个数码管显示不同内容&#xff08;二&#xff09;。注&#xff1a;创建…

HarmonyOS 开发之———应用程序入口—UIAbility的使用

谢谢关注!! 前言:上一篇文章主要介绍ArkJS 基础—〉自定义组件使用。如需了解谢谢查阅:http://t.csdnimg.cn/01PQ2 一、UIAbility概述 UIAbility是一种包含用户界面的应用组件,主要用于和用户进行交互。UIAbility也是系统调度的单元,为应用提供窗口在其中绘制界面。 …

掌握结构化日志记录:全面指南

在当今复杂的软件生态系统中&#xff0c;应用程序日志非常宝贵。它们允许开发者窥视应用程序的内部&#xff0c;了解系统内部的真实情况。但是&#xff0c;传统的非结构化日志数据有很多不足之处。这些混乱的文本块无法提供完整的画面。要真正发挥日志的力量&#xff0c;我们需…

浅析扩散模型与图像生成【应用篇】(三)——RDDM

3. Residual Denoising Diffusion Models 该文提出一种残差去噪扩散模型&#xff08;RDDM&#xff09;可用去图像生成和图像修复&#xff08;如去除阴影、去雨、暗光提升等&#xff09;。该文最大的特点是提出一种双扩散模型&#xff0c;在扩散过程中不仅包含噪声 ϵ \epsilon …

Windows WMI详解

WMI简介 WMI ( Windows Management Instrumentation, Windows管理规范)是Windows 2000/XP管理系统的核心&#xff0c;属于管理数据和操作的基础模块。设计WMI的初衷是达到一种通用性&#xff0c;通过WM操作系统、应用程序等来管理本地或者远程资源。它支持分布式组件对象模型(…

select * from 表 c=‘1‘ and b=‘2‘ and a=‘3‘; abc是联合索引,这样查询会命中索引吗?

倒叙也会命中索引 但是要注意&#xff0c;倒叙的时候必须要有a存在&#xff0c;否则就会索引失效 因为mysql底层会有优化器去进行优化&#xff0c;但是如果没有a的话&#xff0c;那么优化器就不知道要优化那个索引了&#xff0c;所以他走了全表&#xff0c;导致索引失效

[MYSQL数据库]--mysql的基础知识

前言 作者&#xff1a;小蜗牛向前冲 名言&#xff1a;我可以接受失败&#xff0c;但我不能接受放弃 如果觉的博主的文章还不错的话&#xff0c;还请点赞&#xff0c;收藏&#xff0c;关注&#x1f440;支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、数据库…

【Rust详细学习路线】讲解

Rust详细学习路线 1. 介绍2. 初学者阶段3. 进阶阶段4. 深入研究阶段 1. 介绍 学习Rust编程语言可以采取分阶段的方法来确保全面掌握其特色和细节&#xff0c;以下是Rust的一个详细学习路线&#xff0c;你可以根据个人学习进度做适当的调整&#xff1a; 2. 初学者阶段 了解Rus…

Redis数据类型--List类型详解及应用

数据结构 Redis无论什么数据类型&#xff0c;存储的时候都是以键值对key-value形势存储&#xff0c;并且所有的key都是String类型&#xff0c;本文讨论的数据类型是value的数据类型。 List类型 概述&#xff1a;list类型可以存储一个有序的字符串列表&#xff0c;为了方便理…

Tomcat服务部署

1、安装jdk、设置环境变量并测试 第一步&#xff1a;安装jdk 在部署 Tomcat 之前必须安装好 jdk&#xff0c;因为 jdk 是 Tomcat 运行的必要环境。 1. #关闭防火墙 systemctl stop firewalld systemctl disable firewalld setenforce 02. #将安装 Tomcat 所需软件包传到/opt…

备战蓝桥杯Day20 - 堆排序的实现

一、每日一题 蓝桥杯真题之互质数的个数 我的解法&#xff1a; 两个数互质&#xff0c;说明两个数的最大公约数是1&#xff0c;定义了一个函数判断两个数的最大公约数&#xff0c;再在循环中判断&#xff0c;并实现计数。可以实现运行&#xff0c;缺点是时间复杂度很高&#…

javaweb学习(day04-XML)

一、介绍 1 官方文档 地址: https://www.w3school.com.cn/xml/index.asp 2 为什么需要 XML 需求 1 : 两个程序间进行数据通信需求 2 : 给一台服务器&#xff0c;做一个配置文件&#xff0c;当服务器程序启动时&#xff0c;去读取它应当监听的端口号、还有连接数据库的用户名…

C++ 并发编程(3)线程间共享数据

文章目录 一、线程间共享数据1、线程间共享数据的问题2、使用互斥元保护共享数据 一、线程间共享数据 1、线程间共享数据的问题 2、使用互斥元保护共享数据

睿易产品售后工程师初级认证课程练习题

1、以下关于有问必答说法正确的是(A B C) A、睿易APP和睿易公众号都可以找到入口 B、智能机器人+人工双重保障服务质量 C、在线客服有机器人也有人工客服 D、在线客服只有机器人 A B C 2、锐捷设备报修以下说法正确的是(B) A、睿易APP当前不可以进行报修 B、报修需要填写设…

【Java程序设计】【C00321】基于Springboot的在线租房和招聘平台(有论文)

基于Springboot的在线租房和招聘平台&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的在线租房和招聘平台&#xff0c;本系统有管理员、用户、房东以及公司四种角色&#xff1b; 管理员&#xff1a;首页、个人中心…

spring boot集成Elasticsearch 7.16.3

环境&#xff1a;Elasticsearch 版本 7.16.3 Elasticsearch for windows下载地址 windows 若依 spring boot版本 2.6.0 pom文件添加 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch<…

【Kubernetes】K3S

目录 前言一、原理单体架构高可用架构 二、初始化1.配置yum源2.关掉防火墙3.关掉selinux4. 修改内核参数5.关掉swap交换分区 三、安装master节点1. 安装container2.启动master服务 四、安装node节点五、卸载六、总结 前言 各位小伙伴们&#xff0c;大家好&#xff0c;小涛又来…

在消息队列kafka多消费者组消费同一Topic场景下的idea调试debug断点进不去的解决方案

1. 问题场景复现 不同类型的消息发到同一个Topic中&#xff0c;设置多个消费者组&#xff0c;为每个消费者组打一个标记。每一种消费者组只能消费对应的消息类型。这样做的好处是避免设置多个Topic&#xff0c;简化代码开发的同时性能损耗小。问题出现在消费端&#xff0c;由于…

面试数据库篇(mysql)- 10事务中的隔离性是如何保证

锁:排他锁(如一个事务获取了一个数据行的排他锁,其他事务就不能再获取该行的其他锁mvcc : 多版本并发控制MVCC 全称 Multi-Version Concurrency Control,多版本并发控制。指维护一个数据的多个版本,使得读写操作没有冲突 MVCC的具体实现,主要依赖于数据库记录中的隐式字段…