1:使用场景

     从列表页跳转至不同的详情页面,对这些详情页面分别进行缓存

2:核心代码

2.1: 配置路由文件

在路由文件里对需要进行缓存的路由对象添加meta 属性

 // 需要缓存的详情页面路由
  {
    name: detail,
    path: '/myRouter/detail', // 路径
    component: () => import('../views/abc/detail.vue'),
    meta: {
      keepAlive: true, // 是否被缓存
    },
  },

2.2: app页面增加缓存逻辑

<template>
  <el-config-provider :locale="locale">
    <!-- 有条件的进行缓存 -->
    <transition mode="out-in" name="fade">

      <router-view v-slot="{ Component }">
        <keep-alive :include="includeList">
          <component :is="wrap(route?.name , route.query, Component)" :key="route.fullPath" />
        </keep-alive>
      </router-view>
    </transition>
  </el-config-provider>
</template>

wrap 方法

    const wrapperMap = new Map();const wrap = (name:any, query:any, component:any) => {let wrapper;let wrapperName;if(query.catchName){wrapperName = name + '-' + query.catchName;}else {wrapperName  = name;}if (wrapperMap.has(wrapperName)) {wrapper = wrapperMap.get(wrapperName);} else {wrapper = {name: wrapperName,render() {return h('div', { className: 'vaf-page-wrapper' }, component);},};wrapperMap.set(wrapperName, wrapper);}return h(wrapper);};

watch 监听对于route.query 是否存在catchName 参数的路由分别进行缓存

// 监听路由,判断页面是否需要缓存watch(() => route,(newVal: any, oldVal) => {if (newVal.query?.catchName) {if (newVal.meta.keepAlive && !state.includeList.includes(newVal.name + '-' + newVal.query?.catchName)) {state.includeList.push(newVal.name + '-' + newVal.query?.catchName);}} else if (newVal.meta.keepAlive && !state.includeList.includes(newVal.name)) {state.includeList.push(newVal.name);}},{deep: true, // 开启深度监听},);

2.3: 在列表页面的查看点击方法中配置路由添加query 传参 catchName

注:上面为核心代码逻辑,需要根据实际情况进行调整。

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

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

相关文章

十大排序:插入/希尔/选择/堆/冒泡/快速/归并/计数/基数/桶排序 汇总(C语言)

目录 前言非线性时间比较类插入排序(1) 直接插入排序(2) 希尔排序 选择排序(3) 选择排序优化版(4) 堆排序 交换排序(5) 冒泡排序(6) 快速排序hoare版本挖坑版前后指针版非递归版 归并排序(7) 归并排序递归版非递归版 线性时间比较类(8) 计数排序基数排序与桶排序 总结 前言 在计…

报文交换 和 电路交换对比说明

报文交换 和 电路交换 是两种不同的网络通信方式&#xff0c;它们在数据传输的方式、效率、成本和适用场景等方面有所不同。下面详细对比这两种交换方式&#xff0c;并举例说明。 报文交换&#xff08;Message Switching&#xff09; 定义&#xff1a;报文交换是一种存储-转发…

昇思25天学习打卡营第13天|基于MindSpore通过GPT实现情感分类

基于MindSpore通过GPT实现情感分类 情感分类 情感分类是指在自然语言处理(NLP)领域中,通过分析文本内容所表达的情感倾向,将文本归类为正面、负面或中性等类别的任务。 在情感分类中,基于不同的方法和技术,可以分为基于情感词典的方法、基于传统机器学习的方法和基于深…

c++笔试题

语言特性 题目1&#xff1a;请解释C11中新引入的auto和decltype关键字&#xff0c;并给出使用示例。 题目2&#xff1a;什么是RAII&#xff08;Resource Acquisition Is Initialization&#xff09;&#xff1f;请解释其原理并举例说明。 题目3&#xff1a;C11引入了move se…

【unity实战】使用旧输入系统Input Manager 写一个 2D 平台游戏玩家控制器——包括移动、跳跃、滑墙、蹬墙跳

最终效果 文章目录 最终效果素材下载人物环境 简单绘制环境角色移动跳跃视差和摄像机跟随效果奔跑动画切换跳跃动画&#xff0c;跳跃次数限制角色添加2d物理材质&#xff0c;防止角色粘在墙上如果角色移动时背景出现黑线条方法一方法二 墙壁滑行实现角色滑墙不可以通过移动离开…

Web贵州旅游攻略系统-计算机毕业设计源码16663

目 录 第 1 章 引 言 1.1 选题背景与意义 1.2 国内外研究现状 1.3 论文结构安排 第 2 章 系统的需求分析 2.1 系统可行性分析 2.1.1 技术方面可行性分析 2.1.2 经济方面可行性分析 2.1.3 法律方面可行性分析 2.1.4 操作方面可行性分析 2.2 系统功能需求分析 2.3 系…

前端面试题18(js字符串特定内容查找方法)

在JavaScript中&#xff0c;有多种方法可以用来查找字符串中的特定内容。以下是一些常用的方法&#xff0c;包括它们的用途和示例代码&#xff1a; 1. indexOf() indexOf() 方法返回指定文本在字符串中第一次出现的索引&#xff08;位置&#xff09;&#xff0c;如果没有找到…

初学者打字练习平台推荐

大牛打字练习平台 (ccfoj.com) 适合人群&#xff1a;c初学者&#xff0c;10~20岁不定&#xff0c;有效提高对代码的熟悉程度&#xff0c;以及锻炼打字速度。 TypingClub TypingClub是一个免费的在线打字练习平台&#xff0c;提供各种打字练习内容&#xff0c;从基础到高级。…

pulsar单节点能开启事务吗?是不是真的

Apache Pulsar 支持事务&#xff0c;但是需要在分布式模式下运行。单节点模式下不支持 Pulsar 事务。事务功能在 Pulsar 中依赖于分布式的 BookKeeper 存储服务&#xff0c;以确保事务的持久性和可靠性。 具体来说&#xff1a; 分布式模式和事务支持&#xff1a; 在分布式部署…

MyBatis(26)MyBatis 有哪些方式可以实现多数据源管理

在企业级应用开发中&#xff0c;有时需要同时操作多个数据库&#xff0c;这就涉及到多数据源管理的问题。MyBatis作为一个流行的持久层框架&#xff0c;本身并没有直接提供多数据源管理的功能&#xff0c;但是可以通过与Spring等框架结合&#xff0c;或者通过自定义方式来实现多…

【vue组件库搭建04】使用vitepress搭建站点并部署到github

前言 基于vitePress搭建文档站点&#xff0c;使用github pages进行部署 安装VitePress 1.Node.js 18 及以上版本 2.npm add -D vitepress 3.npx vitepress init 4.将需要回答几个简单的问题&#xff1a; ┌ Welcome to VitePress! │ ◇ Where should VitePress initi…

Cesium 二三维热力图

Cesium 二三维热力图 原理&#xff1a;主要依靠heatmap.js包来实现 效果图&#xff1a;

elementPlus-vue3-ts表格单选和双选实现方式

记录在vue3、ts、element-plus环境下表格单选和多选的实现方式 单选 html部分 <el-table...reftaskTableRefselect"selectClick"... ><el-table-column type"selection" width"50" />... </el-table>ts部分 const taskTabl…

三相异步电动机的起动方法

1. 引言 2. 三相笼型异步电动机德起动方法 3. 三相绕线型异步电动机的起动方法 4. 软起动器起动 5. 参考文献 1 引言 三相异步电动机结构简单﹑价格低廉﹑运行可靠﹑维护方便&#xff0c;在工农业生产中得到了广泛应用。为使电动机能够转动起来&#xff0c;并很快达到工作转…

内存拷贝函数对比测试

内存拷贝函数 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include <errno.h> #include <xmmintrin.h> // SSE Intrinsics#define SIZE_1K 1024 #define SIZE_1M (1024 * 1024)void* aligned_malloc…

低代码平台在企业数字化转型中的关键角色与应用

随着数字化转型的深入推进&#xff0c;企业越来越依赖于快速、灵活的软件开发和部署方案。传统的软件开发往往需要大量的编码工作和专业技能&#xff0c;而低代码开发平台则通过简化开发流程、降低技术门槛&#xff0c;为企业提供了一种新的解决方案。本文将探讨低代码开发平台…

从零开始使用WordPress搭建个人网站并一键发布公网详细教程

文章目录 前言1. 搭建网站&#xff1a;安装WordPress2. 搭建网站&#xff1a;创建WordPress数据库3. 搭建网站&#xff1a;安装相对URL插件4. 搭建网站&#xff1a;内网穿透发布网站4.1 命令行方式&#xff1a;4.2. 配置wordpress公网地址 5. 固定WordPress公网地址5.1. 固定地…

ChatGPT:为什么很多算法经过二分思想的优化就变成了logn

ChatGPT&#xff1a;为什么很多算法经过二分思想的优化就变成了logn 很多算法在经过二分思想优化后&#xff0c;时间复杂度变成 O(log⁡n)&#xff0c;这主要是因为二分思想能够显著减少问题的规模。具体来说&#xff0c;二分思想通常应用于那些问题规模可以通过每一步骤减半的…

【LabVIEW学习篇 - 2】:LabVIEW的编程特点

文章目录 LabVIEW的编程特点图形编程天然并行运行基于数据流运行 LabVIEW的编程特点 图形编程 LabVIEW使用图形化的图形化编程语言&#xff08;G语言&#xff09;&#xff0c;用户通过在程序框图中拖放和连接各种节点&#xff08;Nodes&#xff09;来编写程序。每个节点代表一…

什么是跨域?——详解跨域问题及其解决方案

目录 引言什么是跨域同源策略跨域的产生原因跨域的常见解决方案 JSONPCORS代理服务器nginx反向代理后端设置允许跨域 CORS的详细实现 浏览器中的CORS支持服务器端的CORS配置 常见的跨域场景和解决方案 跨域请求API跨域加载资源 跨域的安全性考虑跨域调试技巧总结 引言 在现代…