1、首先创建一个空白界面,空白界面输入写入如下代码
<template>
<div></div>
</template>
<script>
import {mapState} from 'vuex'
export default {
name:"Blank",
data(){
return{
flag : true
}
},
created() {
if(this.flag){
this.flag = false;
}
this.returnPage();
},
methods:{
returnPage(){
let url = this.$route.query;//获取传递过来的路由信息
let str = '';
for(let i in url) {
str += url[i];
}
//获取上个界面的name值
let fromName = str.split("/")[1];
fromName = fromName.charAt(0).toUpperCase() + fromName.slice(1);
//获取上个界面的name值
//清除上个界面的keepAlive缓存
let newKeepAlive = [];
for (let i in this.keepAlive) {
const item = this.keepAlive[i];
if(item != fromName){
newKeepAlive.push(item);
}
}
this.$store.dispatch("changeKeepAlive",newKeepAlive);
//清除上个界面的keepAlive缓存
setTimeout(()=>{//时间不要设置过长
this.$router.push({
path: str,
});
},10);
}
},
activated(){//当前路由激活时触发
if(!this.flag){//如果是第一次进入此界面,也会执行created路由,顾需判断
this.flag = true;
return;
}
this.returnPage();
},
computed:{
...mapState(['keepAlive'])
}
}
</script>
2、点击刷新路由图标时
this.$router.push({
path: '/blank',
query: this.$route.path
})
3、效果