vue中路由缓存

vue中路由缓存

问题描述及截图

在使用某一平台时发现当列表页码切换后点击某一卡片进入详情页后,再返回列表页时页面刷新了。这样用户每次看完详情回到列表页都得再重新输入自己的查询条件,或者切换分页到目标数据页等,操作起来非常闹心。


解决思路

在原有路由面包屑处理基础上,过滤路由数据与vue文件中的name一致后即可通过keep-alive组件的include属性缓存匹配到的路由。

关键代码及打印信息截图

bash 复制代码
修改文件:src\components\Layout\BasicLayoutPage.vue

<template>
	 <!-- 其他代码省略 -->
     <router-view v-slot="{ Component }">
          <keep-alive :include="cachedRoutes">
               <component :is="components || Component" />
          </keep-alive>
     </router-view>
</template>

<script setup lang="ts" name="BasicLayoutPage">
/**
 * cachedRoutes当前需要缓存的路由
 */
let cachedRoutes = ref<Record<string, any>>({});
/**
 * 面包屑处理
 */
const breadcrumbs = computed(() => {
    const paths = router.currentRoute.value.matched;
    let tempPaths = paths.map((item, index) => {
        return {
            index,
            isLast: index === paths.length - 1,
            path: item.path,
            breadcrumbName: (item.meta as any).title || '',
        };
    });
    console.log('tempPaths:', tempPaths);
    // 下面是处理要缓存的路由
    cachedRoutes.value = tempPaths.map((breadcrumb) =>
        breadcrumb.path.split('/').pop(), // 获取path中最后一个/后的值
    );
    console.log('cachedRoutes.value:', cachedRoutes.value);
    return tempPaths;
});
</script>

开发踩坑记,希望可以帮到正在解决该问题的你。若有侵权,联系立删。

相关推荐
自动花钱机1 分钟前
ESLint语法报错
前端·javascript·vue.js·css3·html5
予安灵22 分钟前
XSS 攻击(详细)
前端·web安全·网络安全·网络攻击模型·xss·安全架构·xss攻击
工业互联网专业25 分钟前
基于springcloud微服务架构的巡游出租管理平台
java·vue.js·spring cloud·微服务·毕业设计·源码·课程设计
好_快35 分钟前
Lodash源码阅读-cloneArrayBuffer
前端·javascript·源码阅读
╰つ゛木槿36 分钟前
Vue与React区别分析
前端·vue.js·react.js
thinkQuadratic36 分钟前
vue修饰符
前端·javascript·vue.js
不吃香菜的猪36 分钟前
el-dialog实现遮罩层后面的内容也能点击
前端·javascript·vue.js
好_快38 分钟前
Lodash源码阅读-cloneTypedArray
前端·javascript·源码阅读
好_快39 分钟前
Lodash源码阅读-cloneDataView
前端·javascript·源码阅读
好_快40 分钟前
Lodash源码阅读-copySymbols
前端·javascript·源码阅读