当前位置: 首页 > news >正文

vue,vue3 keepalive没有效果,无法缓存页面include无效,keep-alive

keepalive没有效果,无法缓存页面?

问题大概是组件的name值不对应,vue2修改组件文件的name值,vue3保持组件文件名称和路由页面配置的name一致就可以了,如果vue3不想保持一致,必须手动在文件后面添加export...如下。

vue3不修改文件名称,但实现效果:

核心代码和全部代码:

<script>
export default {name: 'ppidPage'
}
</script>
<template><PpidConfig />
</template>
<script setup>
import { onMounted } from 'vue'
import PpidConfig from './PpidConfig.vue'
import { usePpidStore } from '@/store/operation/ppid.js'
const ppidStore = usePpidStore()
onMounted(async () => {await ppidStore.getAllUnits()
})
</script>
<script>
export default {name: 'ppidPage'
}
</script>

keepalive文件:

<template><section class="app-main"><router-view v-slot="{ Component }"><transition name="fade-transform" mode="out-in"><keep-alive :include="cachedViews"><component :is="Component" :key="key" /></keep-alive></transition></router-view></section>
</template><script setup>
import { computed } from 'vue'
import { useTagsViewStore } from '@/store/tagsView'
import { useRoute } from 'vue-router';
const route = useRoute();
const tagsViewStore = useTagsViewStore()// 缓存的路由组件名称列表
const cachedViews = computed(() => {console.log('当前缓存页面:', tagsViewStore.cachedViews)// return tagsViewStore.cachedViewsreturn tagsViewStore.cachedViews.filter(item => {if (route.name == item && !route.meta.keepAlive) {  //keepAlive为false不缓存return false;} else {return true;}})
})
</script><style scoped></style>

router.js页面配置:

{path: 'ppid-config',permission: 'Operation.PPID',component: () => import('@/views/operation/ppid/ppidPage.vue'),name: 'ppidPage',meta: {title: t('route.operation.ppidConfig'),keepAlive: true}},

vue3 setup组件的name值无法修改,最终的name值会跟文件名称生成一致的。

vue2中可以动态修改组件name值,如下位置:

<script lang="ts">
export default {name: 'User',    //修改组件的name值data(){return {}}
}
</script>

vue官网文档说明:

其他

存在transition组件的写法:

<router-view v-slot="{ Component }" v-show="$route.meta.keepAlive"><transition name="fade-transform" mode="out-in"><keep-alive :include="cachedViews"><component :is="Component" :key="key" /></keep-alive></transition></router-view><router-view v-slot="{ Component }" v-if="!$route.meta.keepAlive"><transition name="fade-transform" mode="out-in"><component :is="Component" :key="key" /></transition></router-view>

相关链接:

https://cn.vuejs.org/guide/built-ins/keep-alive.html

vue3 keep-alive include失效问题_<router-view> <template #default="{ component, rou-CSDN博客

http://www.lryc.cn/news/540761.html

相关文章:

  • Windows逆向工程入门之指针类型
  • PHP+Apache+MySQL安装(Windows)
  • 算法基础 -- 堆排序之C语言实现
  • Hutool - Extra:功能丰富的扩展模块
  • C++ 中的继承详解(上)
  • halcon三维点云数据处理(二十五)moments_object_model_3d
  • Mac M3/M4 本地部署Deepseek并集成vscode
  • 2024年职高单招或高考计算机类投档线
  • Unity Excel导表工具转Lua文件
  • SpringBoot项目集成MinIO
  • 第30篇 基于ARM A9处理器用C语言实现中断<六>
  • Flutter 中的单例模式
  • 8.python文件
  • 2025vue4.x全栈学习关键技术分析线路图
  • 革新之力:数字科技——重塑未来的超越想象之旅
  • 超级详细,知识图谱系统的理论详解+部署过程
  • 电路笔记 (信号): opa tips 放大器反馈电阻并联电容抑制高频噪声的详细推导(传递函数分析)
  • DeepSeek安装部署笔记(一)
  • 【JavaEE进阶】Spring MVC(4)-图书管理系统案例
  • Ubuntu部署ktransformers
  • 助力DeepSeek私有化部署服务:让企业AI落地更简单、更安全
  • 面试官询问项目前后端人员配比之高分示范回答
  • MyBatis中的日志和映射器说明
  • 深入了解 Pinia:Vue 的下一代状态管理工具 (上篇)
  • Unity 中导入的VRM模型渲染为VRoid风格
  • 【ELK】【Elasticsearch 】DSL 和 DQL
  • 最新版本Exoplayer扩展FFmpeg音频软解码保姆级教程
  • 面对低消费欲人群,我们如何开发其需求?
  • 《算法基础入门:最常用的算法详解与应用(持续更新实战与面试题)》
  • Linux设备驱动-练习