33 lines
789 B
Vue
33 lines
789 B
Vue
|
<script>
|
||
|
export default {
|
||
|
name: 'RouteView',
|
||
|
props: {
|
||
|
keepAlive: {
|
||
|
type: Boolean,
|
||
|
default: true
|
||
|
}
|
||
|
},
|
||
|
data () {
|
||
|
return {}
|
||
|
},
|
||
|
render () {
|
||
|
const { $route: { meta }, $store: { getters } } = this
|
||
|
const inKeep = (
|
||
|
<keep-alive>
|
||
|
<router-view />
|
||
|
</keep-alive>
|
||
|
)
|
||
|
const notKeep = (
|
||
|
<router-view />
|
||
|
)
|
||
|
// 这里增加了 multiTab 的判断,当开启了 multiTab 时
|
||
|
// 应当全部组件皆缓存,否则会导致切换页面后页面还原成原始状态
|
||
|
// 若确实不需要,可改为 return meta.keepAlive ? inKeep : notKeep
|
||
|
if (!getters.multiTab && !meta.keepAlive) {
|
||
|
return notKeep
|
||
|
}
|
||
|
return this.keepAlive || getters.multiTab || meta.keepAlive ? inKeep : notKeep
|
||
|
}
|
||
|
}
|
||
|
</script>
|