千家信息网

vue中keep-alive多级路由缓存问题怎么处理

发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,本篇内容介绍了"vue中keep-alive多级路由缓存问题怎么处理"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,
千家信息网最后更新 2025年01月20日vue中keep-alive多级路由缓存问题怎么处理

本篇内容介绍了"vue中keep-alive多级路由缓存问题怎么处理"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1.问题描述

对账中心当便捷导航菜单最后两个是同一模块且是三级及以上菜单时,正常切换两个便捷页签时是可以正常缓存的,但删除最后一个页签时,此时另一个页签页面此时已经不缓存了。

2.原因分析

keep-alive默认支持缓存是两级,对三级及以上层级的页面缓存失效,之前的处理方式为: 监听到路由变化后,将当前的路由的标识及父级标识一起存起来,当多个页面存在时,关闭其中一个页面,也会将本身及父级的标识一起删掉,此时数组中已无父级标识,其他同级页面的缓存将失效。

3.解决思路

将路由配置表的所有路由拆成两个操作,一是保持原样用于菜单的展示,二是对路由配置表进行扁平化处理,将所有的路由处理成二级路由,这样keep-alive就能默认支持缓存了。

4.处理过程

拿到完整的路由配置

const modules = []files.keys().forEach(key => {    const filesObj = files(key).default || files(key)    Object.keys(filesObj).forEach(keyOne => {        modules.push(filesObj[keyOne])    })})

操作完成路由配置

export const menuList = modules;  // 用于菜单展示const routerList = formatTwoStageRoutes(formatFlatteningRoutes(modules)); // 将路由扁平化为二级路由const router = new VueRouter({    scrollBehavior: () => ({ y: 0 }),    mode: 'history',    base: process.env.BASE_URL,    routes: routerList, // 在路由配置项中使用扁平化处理后的路由})

扁平化方法

export const formatFlatteningRoutes =(routesList => {  if (routesList.length <= 0) return routesList;  let list = [];  routesList.forEach(v => {    if(v.path === '/') {      // 用于添加初试layout和首页,其他各中心配置过滤掉layout及父节点,只保留children内路由      list.push(v);      list = list.concat(formatFlatteningRoutes(v.children))    } else if (v.children && v.children.length > 0) {      list = list.concat(formatFlatteningRoutes(v.children))    } else {      list.push(v);    }  })  return list;})export const formatTwoStageRoutes = list => {  if (list.length <= 0) return list;  const routerList = [];  list.forEach(v => {    if (v.path === '/') {      routerList.push({        component: v.component,        name: v.name,        path: v.path,        redirect: v.redirect,        meta: v.meta,        children: []      })    } else if (v.path === '/login' || v.path === '/showcasePage') {      // 不需要配置layout的页面      routerList.push(v)    } else {      routerList[0].children.push({ ...v })    }  })  return routerList;}

"vue中keep-alive多级路由缓存问题怎么处理"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

路由 缓存 处理 配置 页面 扁平 标识 菜单 问题 两个 便捷 内容 更多 知识 过程 支持 实用 学有所成 接下来 原因 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 西部大镖客服务器 上海大数据网络技术咨询商家 ec服务器怎么搞成英文版 46岁应聘软件开发 什么是中间件软件开发技术 在数据库中的如下两个表 力控7.0数据库开发 软件开发类项目方案 我的世界进入服务器出现未知错误 服务器没有电源 网络安全保卫系宣传片 软件开发的产品描述 江苏芯融网络技术研究院好吗 西宁通用服务器 服务器怎么看自己领地多大 山东德禄源网络技术有限公司 蜂考数据库 数据库技术人员岗位名字 电子节能数据库 山东三维人口系统软件开发 计算机网络技术与应用朱晓伟 如何让自己的电脑当服务器 怎么创建免费我的世界服务器 怎样查看浏览器向服务器 软件开发过程编码阶段 银行网络安全知识培训宣传 长城服务器怎么配置管理网口 网络安全的本质网络安全考试 网络文明网络安全宣传活动 网络安全需要懂程序吗
0