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

更新时间:2023-06-29 19:04:26 阅读: 评论:0

keep-alive不能缓存多层级路由菜单问题解决
这出现的原因是多级路由导致的,就是router-view嵌套在层级不同的router-view中切换tag会出现缓存数据失效的问题。⽬前keep-alive可以有效缓存⼀级,⼆级的路由菜单,3级以上菜单并不能做到缓存,这⾥提供⼀个解决⽅案:
在cachedViews中⼿动加上⼀级菜单和三级菜单之间,缺失的⼆级菜单的名字,这样⼆级菜单下的组件就会缓存了
实列代码如下:
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
dpoints
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){
/
/处理多层级路的时候给了⼀个空模板
}el{蒜蓉小白菜
}
e.icon='tting-fill'干咳的原因
} el {
e.icon='circle'
//路径为空时会因为undefind报错,给个默认值来解决
e.path = e.url.split('/')[2]||'nopath'
}
// delete e.parentId
delete e.url
// if (e.redirect === '') {
//  direct
// }
if (e.icon !== '' && e.title !== '') { // 配置菜单标题与图标
小学生好词好句好段
<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不能多层缓存内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!

本文发布于:2023-06-29 19:04:26,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1060492.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:菜单   路由   缓存   层级   不能   代码   问题   时会
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图