A—>B—>C
A到B刷新,C到B缓存
App.vue里的代码字段
<keep-alive v-if="isRouterAlive" :exclude="excludeNameList">
<router-view v-if="$route.meta.keepAlive" />
</keep-alive>
<router-view v-if="isRouterAlive && !$route.meta.keepAlive" :key="$route.fullpath" />
export default {
name: 'App',
data() {
return {
isRouterAlive: true
}
},
provide() {
return {
reload: this.reload
}
},
methods:{
reload() {
this.isRouterAlive = false
this.$nextTick(() => (this.isRouterAlive = true))
}
}
}
B页面组件代码段
export default {
inject: ['reload'],
beforeRouteEnter(to, from, next) {
to.meta.keepAlive = true
if (from.path !== '/evaluation/C') {
next(vm => vm.reload())
} else {
next()
}
},
beforeRouteLeave(to, from, next) {
if (to.path === '/evaluation/C') {
from.meta.keepAlive = true
next()
} else {
from.meta.keepAlive = false
next()
}
}
}
配置B页面路由时,加个meta,设置keepAlive: true。