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>
|