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 相关文章推荐
js 判断浏览器类型 去全角、半角空格 自动关闭当前窗口
Apr 10 Javascript
Jquery Ajax学习实例4 向WebService发出请求,返回实体对象的异步调用
Mar 16 Javascript
jQuery对象[0]是什么含义?
Jul 31 Javascript
基于Jquery的标签智能验证实现代码
Dec 27 Javascript
cnblogs 代码高亮显示后的代码复制问题解决实现代码
Dec 14 Javascript
jQuery在ie6下无法设置select选中的解决方法详解
Sep 20 Javascript
jQuery插件echarts设置折线图中折线线条颜色和折线点颜色的方法
Mar 03 Javascript
20170918 前端开发周报之JS前端开发必看
Sep 18 Javascript
element-ui table span-method(行合并)的实现代码
Dec 20 Javascript
深入分析element ScrollBar滚动组件源码
Jan 22 Javascript
使用watch在微信小程序中实现全局状态共享
Jun 03 Javascript
vue中使用vue-pdf的方法详解
Sep 05 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
超神学院:天使彦公认最美的三个视角,网友:我的天使快下凡吧!
2020/03/02 国漫
php简单的会话类代码
2011/08/08 PHP
php 使用array函数实现分页
2015/02/13 PHP
php 反斜杠处理函数addslashes()和stripslashes()实例详解
2016/12/25 PHP
php生成HTML文件的类方法
2019/10/11 PHP
js函数中onmousedown和onclick的区别和联系探讨
2013/05/19 Javascript
js 弹出对话框(遮罩)透明,可拖动的简单实例
2016/07/11 Javascript
微信小程序 教程之注册程序
2016/10/17 Javascript
jQuery 出现Cannot read property ‘msie’ of undefined错误的解决方法
2016/11/23 Javascript
js获取ip和地区
2017/03/10 Javascript
使用JS动态显示文本
2017/09/09 Javascript
前端必备插件之纯原生JS的瀑布流插件Macy.js
2017/11/22 Javascript
vue刷新和tab切换实例
2018/02/11 Javascript
Javascript读写cookie的实例源码
2019/03/16 Javascript
前端面试知识点目录一览
2019/04/15 Javascript
Electron 调用命令行(cmd)
2019/09/23 Javascript
js实现内置计时器
2019/12/16 Javascript
[01:10]3.19DOTA2发布会 三代刀塔人第一代
2014/03/25 DOTA
python的描述符(descriptor)、装饰器(property)造成的一个无限递归问题分享
2014/07/09 Python
用Python编写简单的微博爬虫
2016/03/04 Python
python实现SOM算法
2018/02/23 Python
详解django的serializer序列化model几种方法
2018/10/16 Python
Python3 实现文件批量重命名示例代码
2019/06/03 Python
python 寻找离散序列极值点的方法
2019/07/10 Python
Django logging配置及使用详解
2019/07/23 Python
计算pytorch标准化(Normalize)所需要数据集的均值和方差实例
2020/01/15 Python
基于python连接oracle导并出数据文件
2020/04/28 Python
CSS3制作3D立方体loading特效
2020/11/09 HTML / CSS
简单整理HTML5的基本特性和语法
2016/02/18 HTML / CSS
项目经理任命书范本
2014/06/05 职场文书
低碳环保口号
2014/06/12 职场文书
银行优秀员工推荐信
2015/03/24 职场文书
银行岗位培训心得体会
2016/01/09 职场文书
2016党员干部廉洁自律心得体会
2016/01/13 职场文书
nginx location优先级的深入讲解
2021/03/31 Servers
MySQL学习之基础命令实操总结
2022/03/19 MySQL