keep-alive不能缓存多层级路由菜单问题解决


Posted in Javascript onMarch 10, 2020

这出现的原因是多级路由导致的,就是router-view嵌套 在层级不同的router-view中切换tag会出现缓存数据失效的问题。目前keep-alive可以有效缓存一级,二级的路由菜单,3级以上菜单并不能做到缓存,这里提供一个解决方案:

在cachedViews中手动加上一级菜单和三级菜单之间,缺失的二级菜单的名字,这样二级菜单下的组件就会缓存了

实列代码如下:

keep-alive不能缓存多层级路由菜单问题解决

const _import = require('@/router/_import_prodection');//获取组件的方法
import {tree} from '@/utils/treeDate'
import Layout from '@/views/layout'
import EmptyTemplate from '@/views/layout/EmptyTemplate'

export function filterAsyncRouter(routerlist) {
  const routerlists=tree(routerlist )
  //获取路由信息
  function getRouter(routerlists){
    routerlists.forEach(e => {
    // 删除无用属性
    delete e.catalogCode
    delete e.catalogOrder
    delete e.endpoints
    delete e.fullOrder
    
    // delete e.permName
    // delete e.id
    // delete e.parentId
    e.name=e.catalogName
    
    if (e.parentId === 0||e.children) {//Layout组件特殊处理
      //路径为空时会因为undefind报错,给个默认值来解决
      e.path = e.url||'nopath'
      if(e.url.split('/').length>2){
      //处理多层级路的时候给了一个空模板
        e.component = EmptyTemplate
      }else{
        e.component = Layout
      }
      e.icon='setting-fill'
      
    } else {
      e.icon='circle'
      e.component = _import(e.url)
      //路径为空时会因为undefind报错,给个默认值来解决
      e.path = e.url.split('/')[2]||'nopath'
    }
    // delete e.parentId
    delete e.url
    // if (e.redirect === '') {
    //  delete e.redirect
    // }
    
    if (e.icon !== '' && e.title !== '') { // 配置 菜单标题 与 图标
      e.meta = {
        // title: e.catalogName 中文名称
         // catalogEngName 英文名称
        title: e.catalogEngName,
        titleZh:e.catalogName,
        icon: e.icon
      }
    }
    delete e.catalogName
    delete e.icon
    delete e.title
    // delete e.name//由于名字的存在导致named 错误 删掉
    if (e.children != null) {
      // 存在子路由就递归
      getRouter(e.children)
    }
    })
    return routerlists
  }
  const getRouters=getRouter(routerlists)
    // return asyncRouterMap
    
  return getRouters
}

空模板的代码如下:

<template>
<div>
  <app-main/>
</div>
</template>
<script>
import { AppMain} from './components'
export default {
  name:'EmptyTemplate',
  components:{AppMain}
  
}
</script>

tagsViewd.js关键代码,在cachedViews中加入空模板的name

const state = {
 visitedViews: [],
 cachedViews: ['EmptyTemplate']
}

到此这篇关于keep-alive不能缓存多层级路由菜单问题解决的文章就介绍到这了,更多相关keep-alive不能多层缓存内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
向fckeditor编辑器插入指定代码的方法
May 25 Javascript
lib.utf.js
Aug 21 Javascript
jQuery的链式调用浅析
Dec 03 Javascript
更换select下拉菜单背景样式的实现代码
Dec 20 Javascript
js关于精确计算和数值格式化以及直接引js文件
Jan 28 Javascript
js 获取经纬度的实现方法
Jun 20 Javascript
JavaScript结合Bootstrap仿微信后台多图文界面管理
Jul 22 Javascript
AngularJs Managing Service Dependencies详解
Sep 02 Javascript
JAVA Web实时消息后台服务器推送技术---GoEasy
Nov 04 Javascript
Bootstrap基本插件学习笔记之Alert警告框(20)
Dec 08 Javascript
Angular.js中定时器循环的3种方法总结
Apr 27 Javascript
微信小程序倒计时功能实现代码
Nov 09 Javascript
JS关闭子窗口并且刷新上一个窗口的实现示例
Mar 10 #Javascript
Vue动态加载图片在跨域时无法显示的问题及解决方法
Mar 10 #Javascript
Vue项目打包压缩的实现(让页面更快响应)
Mar 10 #Javascript
vue实现瀑布流组件滑动加载更多
Mar 10 #Javascript
JavaScript代理模式原理与用法实例详解
Mar 10 #Javascript
JavaScript命令模式原理与用法实例详解
Mar 10 #Javascript
JavaScript实现指定数量的并发限制的示例代码
Mar 10 #Javascript
You might like
PHP 数组教程 定义数组
2009/10/23 PHP
解析PHP中的内存管理,PHP动态分配和释放内存
2013/06/28 PHP
php实现mysql备份恢复分卷处理的方法
2014/12/26 PHP
php实现登录页面的简单实例
2019/09/29 PHP
laravel邮件发送的实现代码示例
2020/01/31 PHP
javascript实现tabs选项卡切换效果(扩展版)
2013/03/19 Javascript
jquery操作checkbox实现全选和取消全选
2014/05/02 Javascript
javascript 小数取整简单实现方式
2014/05/30 Javascript
Juery解决tablesorter中文排序和字符范围的方法
2015/05/06 Javascript
JavaScript数据结构与算法之集合(Set)
2016/01/29 Javascript
JavaScript实现页面无操作倒计时退出
2016/10/22 Javascript
js+html制作简单日历的方法
2017/06/27 Javascript
浅谈pc端rem字体设置的问题
2017/08/03 Javascript
聊聊JS动画库 Velocity.js的使用
2018/03/13 Javascript
Vue中使用canvas方法总结
2019/02/12 Javascript
Vue.js递归组件实现组织架构树和选人功能案例分析
2019/07/03 Javascript
python3使用urllib示例取googletranslate(谷歌翻译)
2014/01/23 Python
python3实现ftp服务功能(客户端)
2017/03/24 Python
Python在不同目录下导入模块的实现方法
2017/10/27 Python
PyCharm在win10的64位系统安装实例
2017/11/26 Python
Python callable()函数用法实例分析
2018/03/17 Python
实例讲解Python爬取网页数据
2018/07/08 Python
[原创]Python入门教程3. 列表基本操作【定义、运算、常用函数】
2018/10/30 Python
对python判断是否回文数的实例详解
2019/02/08 Python
CSS3地图动态实例代码(圆圈向外扩散)
2018/06/15 HTML / CSS
公司薪酬管理制度
2014/01/31 职场文书
《听鱼说话》教学反思
2014/02/15 职场文书
大班上学期幼儿评语
2014/04/30 职场文书
生态养殖创业计划书
2014/05/06 职场文书
和谐社区口号
2014/06/19 职场文书
环境监测与治理技术专业求职信
2014/07/06 职场文书
教育实习指导教师评语
2014/12/31 职场文书
干货分享:推荐信写作技巧!
2019/06/21 职场文书
laravel添加角色和模糊搜索功能的实现代码
2021/06/22 PHP
详解Java线程池是如何重复利用空闲线程的
2021/06/26 Java/Android
Python中的变量与常量
2021/11/11 Python