Skip to content

Commit ea9404d

Browse files
committed
fix: custom route-view keepAlive
1 parent 692f0f8 commit ea9404d

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

src/layouts/PageView.vue

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,18 @@
4141
<div class="page-header-index-wide">
4242
<slot>
4343
<!-- keep-alive -->
44-
<router-view ref="content"></router-view>
44+
<keep-alive v-if="multiTab">
45+
<router-view ref="content" />
46+
</keep-alive>
47+
<router-view v-else ref="content" />
4548
</slot>
4649
</div>
4750
</div>
4851
</div>
4952
</template>
5053

5154
<script>
55+
import { mapState } from 'vuex'
5256
import PageHeader from '@/components/PageHeader'
5357
5458
export default {
@@ -80,6 +84,11 @@ export default {
8084
tabs: {}
8185
}
8286
},
87+
computed: {
88+
...mapState({
89+
multiTab: state => state.app.multiTab
90+
})
91+
},
8392
mounted () {
8493
this.getPageMeta()
8594
},

src/layouts/RouteView.vue

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
<script>
22
export default {
33
name: 'RouteView',
4+
props: {
5+
keepAlive: {
6+
type: Boolean,
7+
default: true
8+
}
9+
},
410
data () {
511
return {}
612
},
@@ -17,10 +23,10 @@ export default {
1723
// 这里增加了 multiTab 的判断,当开启了 multiTab 时
1824
// 应当全部组件皆缓存,否则会导致切换页面后页面还原成原始状态
1925
// 若确实不需要,可改为 return meta.keepAlive ? inKeep : notKeep
20-
if (meta.keepAlive === false) {
26+
if (!getters.multiTab && meta.keepAlive === false) {
2127
return notKeep
2228
}
23-
return getters.multiTab || meta.keepAlive ? inKeep : notKeep
29+
return this.keepAlive || getters.multiTab || meta.keepAlive ? inKeep : notKeep
2430
}
2531
}
2632
</script>

0 commit comments

Comments
 (0)