更新到最新版本后关闭按钮无效,提示Cannot read property 'key' of undefined
hellolex opened this issue · comments
Bug 描述
更新到最新版本后出现bug
1、点击标签页的关闭按钮无效,控制台提示
[Vue Router Tab] TypeError: Cannot read property 'key' of undefined
2、原来配置的全局alive-id="fullPath"属性无效,无法重复打开全路径不同的页面,控制台还是提示
[Vue Router Tab] TypeError: Cannot read property 'key' of undefined
截图
如果可以,请添加屏幕截图以帮助解释您的问题。
代码重现
关键代码
<router-tab
alive-id="fullPath"
ref="router-tab"
default-page="/home"
:tab-transition="null"
:page-transition="null"
:keep-last-tab="false"
:dragsort="false">
<div slot="end" class="flex-ac" style="height:100%;">
<span><i class="fa fa-times"></i></span>
</div>
</router-tab>
开发环境(请填写以下信息)
Node.js:12.18.3
"vue": "2.6.11",
"vue-router": "3.2.0",
"vue-router-tab": "1.2.6"
运行环境(请填写以下信息)
- 操作系统: [Windows 7
降版本到1.2.2后也是一样的情况。并且是打包部署后才会有这个问题,npm run dev运行起来是正常的。
我这边是开发环境和部署都有这个问题
都是 Nuxt 下的吗?
都是 Nuxt 下的吗?
我有2个项目引用了vue-router-tab,一个是普通的vue项目,vue-router-tab版本回退到1.2.5就正常了,另一个是nuxt项目,逐级回退到1.2.2都还没有解决。
我降了版本到1.2.5 和 1.2.4都还有这个问题,我的是普通的vue项目
可以展开下错误消息吗?
展开到对应的代码格式化看看
展开到对应的代码格式化看看
有点多,我截的图可能不一定是你想要的结果。看是否要远程看看,qq已发送至你的邮箱。
大概定位到原因了,应该是你们升级了 Vue 的版本,新版本 Vue 的 KeepAlive 实现有些变化,原有移除缓存的判断方式不再适用,需要更改兼容这里的逻辑
Vue 官方的 KeepAlive 精简了缓存的数据,导致移除缓存失败
vuejs/vue@e7baaa1
大概定位到原因了,应该是你们升级了 Vue 的版本,新版本 Vue 的 KeepAlive 实现有些变化,原有移除缓存的判断方式不再适用,需要更改兼容这里的逻辑
Vue 官方的 KeepAlive 精简了缓存的数据,导致移除缓存失败
vuejs/vue@e7baaa1
那可能是的,我这nuxt项目的vue版本是2.6.13。
升级 1.2.7
版本试试,问题应该已经修复了
原来配置的全局alive-id="fullPath"属性无效
在 1.0.0
版本时,组件就已经弃用配置项 alive-id
更改全局的规则,并且默认同一个路由是保持一个页签的。
目的是尽量避免用户同时打开太多的页签,导致应用内存占用太大。
参考提交记录:
feat(RouterAlive): RouterAlive 组件使用 keep-alive + router-view 重构
升级
1.2.7
版本试试,问题应该已经修复了原来配置的全局alive-id="fullPath"属性无效
在
1.0.0
版本时,组件就已经弃用配置项alive-id
更改全局的规则,并且默认同一个路由是保持一个页签的。目的是尽量避免用户同时打开太多的页签,导致应用内存占用太大。
参考提交记录:
feat(RouterAlive): RouterAlive 组件使用 keep-alive + router-view 重构
测试过了,已修复,辛苦了,谢谢👏👏👏
升级
1.2.7
版本试试,问题应该已经修复了原来配置的全局alive-id="fullPath"属性无效
在
1.0.0
版本时,组件就已经弃用配置项alive-id
更改全局的规则,并且默认同一个路由是保持一个页签的。目的是尽量避免用户同时打开太多的页签,导致应用内存占用太大。
参考提交记录:
feat(RouterAlive): RouterAlive 组件使用 keep-alive + router-view 重构
我看文档知道现在是需要在单个路由上自行添加key=fullPath,但是我司系统要求的确奇葩,就是每一次点击都是要新开一个标签,系统中路由有上百个,每个都自行写这个麻烦,目前只好写个遍历加上,可以考虑一下暴露个全局参数可以进行修改
而且不知道为啥之前到1.2.4版本时这个全局alive-id="fullPath"属性还是生效的
可以新建一个 feature issue,我后续看有没时间补充这个功能吧