1、情境:在若依框架中每个页面设置了缓存,但是有一个功能需要从这个页面带参数去另外一个页面进行跳转,此时发现因为缓存,这个跳转的功能失效了
2、操作:在跳转之前的那个页面加载之前加一个标记
mounted() {
sessionStorage.setItem('custom', 'Refresh');
}
3、在跳转离开这个第一个页面之前设置以下的代码,这段代码写在method下面,和它同级【这里有一个大坑!!!!缓存的这个sessionStorage.setItem('custom', '');里面的custom是要写你页面路由的那个名字,不是随便起的,哎,因为这个找了好久的错误!救命】
beforeRouteLeave(to, from, next) {
console.log('kanyixia' + to.query.casesId);
if (!to.query.casesId) { //判断路由的参数 如果没有就把标记清空,如果有就带上标记
sessionStorage.setItem('custom', '');
} else {
sessionStorage.setItem('custom', 'Refresh');
}
// debugger;
if (
to.name === 'Custom' &&
sessionStorage.getItem('custom') === 'Refresh'
) {
try {
var cache = this.$vnode.parent.componentInstance.cache;
var key = '';
for (var prop in cache) {
if (prop.lastIndexOf('custom') > 0) {
key = prop;
}
}
if (key != '') {
delete cache[key];
}
} catch (error) {}
this.$destroy();
}
next();
}
4、最后在跳转的方法体中把这个标记清除
// 跳转至第二个页面
goCases(row) {
let casesId = row.id;
this.$router.push({
path: '/cases/custom',
// name: 'Custom',
query: { casesId: casesId }
// params: { noCache: true }
});
sessionStorage.setItem('custom', '');//这里进行清除标记
}
转载自:若依 this.$router.push 同地址不同参,页面不刷新问题_ruoyi公共路由不同参数跳转页面不刷新-CSDN博客