vue-vben-admin
vue-vben-admin copied to clipboard
动态路由缓存问题
Describe the bug
菜单:功能 > Tab带参
打开 Tab带参1,Tab带参2 页面,点击刷新按钮,两个页面的填写的缓存数据均会被清空
因为动态路由页面的name相同,造成这个情况,请问这个有好的解决方案吗?
Reproduction
- 打开菜单 功能 > Tab带参 > Tab带参1 并输入内容
- 打开菜单 功能 > Tab带参 > Tab带参2 并输入内容
- 刷新 Tab带参1 或者 Tab带参2, 两个页面的填写的缓存数据均会被清空
System Info
- Operating System: MacOS 11.6.1
- Node version: 14.15.4
- Package manager (npm/yarn/pnpm) and version: 6.14.10
看文档Meta配置项判断一下ignoreKeepAlive的缓存页面就可以了
兄弟,你可能没有明白我的意思,我需要keepAlive的缓存功能,但是当页面是动态路由的时候(例如:/detail/:id),打开两个该页面的时候,两个页面的name是相同的,vue的keepAlive是给予name缓存的,你使用标签页刷新功能的时候,会移除keepAlive中include的name,导致所有的动态路由页面都被刷新了。
那就存一下数据不可以解决你数据消失的问题吗,pinia可以满足啊
去掉 includes... 如果你需要全局缓存的话. 测试有效. 但是不能定制某个tab满足 "每次切换都刷新".
我还没理解, keep-live中关于 includes的设计.
includes的局限是 通过 Component
的名称进行缓存. 动态组件的每个 key都不一样,因此下面这段代码就不缓存了?
<keep-alive v-if="openCache" :include="getCaches">
<component :is="Component" :key="route.fullPath" />
</keep-alive>
同样的场景,我是开启了缓存,每次关闭再打开新的tab时候不会重新发请求,感觉这个设计思路就有问题一样= =,已存在tab栏里的页面在缓存情况下,切换不发请求是正常的,但重新打开页面也不请求就有问题了啊
兄弟,你可能没有明白我的意思,我需要keepAlive的缓存功能,但是当页面是动态路由的时候(例如:/detail/:id),打开两个该页面的时候,两个页面的name是相同的,vue的keepAlive是给予name缓存的,你使用标签页刷新功能的时候,会移除keepAlive中include的name,导致所有的动态路由页面都被刷新了。
遇到同样的问题!!!
This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 7 days