解决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怕会出问题,毕竟里面还有一些特殊符号之类的东西。

你可能感兴趣的:(vue.js,前端,javascript)