背景:若依框架里面默认页面都是缓存的,使用this.$router.push 同地址不同参打开页面时,页面也默认缓存了,导致数据不刷新。

解决办法:

1、打开页面前创建一个标记

sessionStorage.setItem("cgsqmx","Refresh");

2、离开页面时发现有这个标记,然后删若依缓存

beforeRouteLeave (to, from, next) {
debugger;
if (to.name === 'Cgsqmx' && sessionStorage.getItem("cgsqmx")==="Refresh") {
try {
var cache = this.$vnode.parent.componentInstance.cache;
var key="";
for(var prop in cache){
if(prop.lastIndexOf("cgsqmx")>0){
key=prop;
}
}
if(key!=""){
delete cache[key];
}
} catch (error) {

}

// // console.log('返回管理页面')
// if (this.$vnode && this.$vnode.data.keepAlive) {
// if (this.$vnode.parent && this.$vnode.parent.componentInstance && this.$vnode.parent.componentInstance.cache) {
// if (this.$vnode.componentOptions) {
// var key = this.$vnode.key == null
// ? this.$vnode.componentOptions.Ctor.cid + (this.$vnode.componentOptions.tag ? `::${this.$vnode.componentOptions.tag}` : '')
// : this.$vnode.key
// var cache = this.$vnode.parent.componentInstance.cache
// var keys = this.$vnode.parent.componentInstance.keys
// if (cache[key]) {
// if (keys.length) {
// var index = keys.indexOf(key)
// if (index > -1) {
// keys.splice(index, 1)
// }
// }
// delete cache["key"]
// debugger;
// }
// }
// }
// }
this.$destroy()
}
next()
},

3、到达目标页面后,清空标记

sessionStorage.setItem("cgsqmx","");