解决d2-admin同名组件缓存问题

问题描述:d2-admin在缓存时,是用name做键名来保存数据的,所以当我们同时打开两个相同name的页面时,如果关闭其中一个,则两个页面的缓存会同时被清空。

比如我们需要同时打开多个订单详情页面,这些订单详情页面的name就是相同的,缓存其实用的也是同一个,关闭某一个订单详情页面的话,其他订单详情页面,都会被刷新,这样就有可能造成之前其他页面录入的数据未能及时保存而造成数据丢失。

问题是不大,但总归体验不好

解决方案:

修改缓存时的键名

src\store\modules\d2admin\modules\page.js

修改close和open两个函数
 

将open函数中的

if (isKeepAlive({ meta })) commit('keepAlivePush', name)

修改为

if (isKeepAlive({ meta })) commit('keepAlivePush', 'cache-'+md5(fullPath))

将close函数中的

commit('keepAliveRemove', state.opened[index].name)

修改为

commit('keepAliveRemove', ‘cache-’+md5(state.opened[index].fullPath))

 文中使用的md5函数,需自行添加引用,也可用其他方法来实现,主要我对这东西不太熟,感觉如果直接用fullPath怕会出问题,毕竟里面还有一些特殊符号之类的东西。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值