VUE3,自定义控制keep-alive缓存

安装插件

npm install vite-plugin-vue-setup-extend --save

在vite.config.ts中

import VueSetupExtend from 'vite-plugin-vue-setup-extend'

.....

plugins:[

        vue(),

        VueSetupExtend(),

        .....

]

useKeepalive.ts

import { ref } from "vue"

export const includes = ref<string[]>([]);


// 增加缓存

export function addKeepAliveCache(name: string) {

    if (includes.value.find(item => item === name)) return;

    includes.value.push(name);

}

// 移除缓存

export function removeKeepAliveCache(name: string) {

    const index: number | undefined | null = includes.value.findIndex(item => item === name)

    if([null, undefined].includes(index)) return

    includes.value.splice(index, 1);

}

// 清空缓存

export function clearKeepAliveCache() {

    includes.value = [];

}

App.vue

<router-view v-slot="{ Component }">

    <keep-alive  :include="includes">

       <component :key="route.name || route.path" :is="Component" />

    </keep-alive>

</router-view>

在路由钩子中:

router.afterEach((to) => {

    if (to.meta?.keepAlive) {

        const matched = router.currentRoute.value.matched ?? []

        const instance = matched.find((instan: any) => instan.path === to.path)

        // 读取路由组件实例的name属性

        const name: string = String(instance?.components?.default?.name || '');

        if (name) {

          addKeepAliveCache(name)

        }

    }

})

在进入别的一级菜单前

clearKeepAliveCache()

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

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

相关文章

win10系统postgresql重装软件后原数据如何迁移

1、备份postgresql安装目录下的data文件夹 2、重新安装postgresql同一版本的软件 3、停止postgresql-x64-12服务 4、替换data文件夹 删除postgresql安装后新的的data文件夹 删除后将第一步备份的data文件夹粘贴过来&#xff0c;还是同一位置 5、启动postgresql-x64-12服务 …

树莓派调用usb摄像头(三)

查看是否检索到摄像头 因为我的摄像头是usb 的所以使用一下命令查看摄像头 安装fswebcam sudo apt-get install fswebcam输入以下命令&#xff0c;开启摄像头 fswebcam --no-banner -r 640x480 image3.jpg sudo apt-get install cmake libjpeg8-dev 提示&#xff1a;Packag…

配置dns主从服务器,能够实现正常的正反向解析

一.DNS域名服务器原理及作用等介绍 1.DNS简介&#xff1a; DNS是互联网上的一项服务&#xff0c;担任域名和IP地址相互映射的一个分布式数据库&#xff0c;相较于IP&#xff0c;域名更便于记忆能够使人更方便的访问互联网。但是计算机只能基于IP来识别对方&#xff0c;而且要上…

vue3+ts+vite配置项目引入@surely-vue/table less报错

在项目当中报错Inline JavaScript is not enabled. Is it set in your options? 修改配置如下&#xff1a; return {css: {preprocessorOptions: {less: {javascriptEnabled: true //开启less编译&#xff0c;注意&#xff1a;这个很重要}}},}

怿星科技测试实验室获CNAS实验室认可,汽车以太网检测能力达国际标准

2023年12月27日&#xff0c;上海怿星电子科技有限公司测试实验室&#xff08;下称&#xff1a;EPT LABS&#xff09;通过CNAS实验室认可批准&#xff0c;并于2024年1月5日正式取得CNAS实验室认可证书&#xff08;注册号CNAS L19826&#xff09;&#xff0c;标志着怿星科技的实验…

mysql group_concat函数使用

CREATE TABLE aa (id int(11) DEFAULT NULL,name varchar(50) DEFAULT NULL ) ENGINEInnoDB DEFAULT CHARSETutf8mb41、基本查询 SELECT * FROM aa;2、以id分组&#xff0c;把name字段的值打印在一行&#xff0c;逗号分隔(默认) select id,group_concat(name) from aa group …

mac pro “RESP.app”意外退出 redis desktop manager

文章目录 redis desktop manager下载地址提示程序含有恶意代码“RESP.app”意外退出解决办法&#xff1a;下载python3.10.并安装重新打开RESP如果还是不行&#xff0c;那么需要替换错误路径&#xff08;我的没用&#xff09;外传 最近在研究redis的消息&#xff0c;看到了strea…

iOS UI掉帧和卡顿优化解决方案记录

UI卡顿原理 在 VSync 信号到来后&#xff0c;系统图形服务会通过 CADisplayLink 等机制通知 App&#xff0c;App 主线程开始在 CPU 中计算显示内容&#xff0c;比如视图的创建、布局计算、图片解码、文本绘制等。随后 CPU 会将计算好的内容提交到 GPU 去&#xff0c;由 GPU 进行…

vba设置excel单元格背景色

vba设置excel单元格背景色位蓝色 Sheet1.Cells(hang, 2).Interior.Color RGB(0, 0, 255) 参考链接 【VBA】给单元格设置背景色_vba 将一行底色置绿色-CSDN博客https://blog.csdn.net/s_h_m114_2/article/details/105787093 参考2 知乎 VBA--单元格的背景色设置 特此…

一文读懂【北交所】开通条件及交易规则!

近期市场持续萎靡不振&#xff0c;北交所却在大涨调整后&#xff0c;还能继续拉升&#xff0c;前些天还打起了“麻将”&#xff0c;“东南西北中”花式齐飞。这带给投资者朋友们极大的信心&#xff01;那么有些朋友还没有跟上吃肉&#xff0c;还不了解什么是北交所&#xff1f;…

GitLab Runner 实现项目 CI/CD 发布

Gitlab Runner简介 Gitlab实现CICD的方式有很多&#xff0c;比如通过Jenkins&#xff0c;通过Gitlab Runner等&#xff0c;今天主要介绍后者。Gitlab在安装的时候&#xff0c;就默认包含了Gitlab CI的能力&#xff0c;但是该能力只是用于协调作业&#xff0c;并不能真的去执行…

如何使用Docker一键部署WBO白板并实现固定公网地址远程访问

文章目录 前言1. 部署WBO白板2. 本地访问WBO白板3. Linux 安装cpolar4. 配置WBO公网访问地址5. 公网远程访问WBO白板6. 固定WBO白板公网地址 前言 WBO在线协作白板是一个自由和开源的在线协作白板&#xff0c;允许多个用户同时在一个虚拟的大型白板上画图。该白板对所有线上用…

在线项目实习|2024寒假项目实战火热报名中!

一、在线实习项目分类 二、在线实习项目流程 三、在线实习项目优惠及项目特色 1、师傅带练教学模式&#xff0c;手把手教你掌握 采用“师带徒”的教学模式&#xff0c;课程以“项目前置知识学习 师傅带练 项目实战”贯穿&#xff0c;强调动手实操&#xff0c;内容以代码落地为…

cellchat安装

官方安装文档&#xff1a; GitHub - jinworks/CellChat: R toolkit for inference, visualization and analysis of cell-cell communication from single-cell and spatially resolved transcriptomics 我安装过的命令&#xff1a; install.packages(NMF) devtools::instal…

python的random模块

random模块是Python中用于生成伪随机数的模块。它提供了一系列的函数和类&#xff0c;可以用于生成随机数、随机选择和随机排列等操作。以下是一些常用的random模块函数和类的示例用法&#xff1a; random.random()&#xff1a;生成一个0到1之间的随机浮点数。 import random…

Linux中安装字体

问题说明 wps 安装后打开文件部分字体出现乱码&#xff0c;原因主要是linux中缺少windows中的相关字体&#xff0c;只要从windows电脑中的字体拷贝到linux系统中并安装就能解决问题 对ubuntu 和manjora有效。 安装字体 字体下载地址可参考附录 在 Linux 中&#xff0c;一次…

vue3 + tsrpc +mongodb 实现后台管理系统

前言 之前上线了一个vue后台管理系统&#xff0c;有小伙伴问我有没有后端代码&#xff0c;咱只是个小前端&#xff0c;这就有点为难我了。不过不能辜负小伙伴的信任&#xff0c;nodejs也可以啊&#xff0c;废话不多说&#xff0c;开搞&#xff01;后端采用 TSRPC 框架实现 API…

【深度学习目标检测】十五、基于深度学习的口罩检测系统-含GUI和源码(python,yolov8)

YOLOv8是一种物体检测算法&#xff0c;是YOLO系列算法的最新版本。 YOLO&#xff08;You Only Look Once&#xff09;是一种实时物体检测算法&#xff0c;其优势在于快速且准确的检测结果。YOLOv8在之前的版本基础上进行了一系列改进和优化&#xff0c;提高了检测速度和准确性。…

基于vue+Spring Boot技术的幼儿园管理系统设计与实现4un3j

本系统能为家长、教师提供一个幼儿园管理平台&#xff0c;就能够快速有效的帮助家长在线查询活动名次、学生考勤、成长记录等&#xff0c;教师发布班级信息、课程信息等&#xff0c;并且可以让管理员能够轻松效率地添加所有的信息。系统开发的意义主要在于两个方面&#xff0c;…