RouteView.vue 902 B

123456789101112131415161718192021222324252627282930313233
  1. <script>
  2. export default {
  3. name: 'RouteView',
  4. props: {
  5. keepAlive: {
  6. type: Boolean,
  7. default: true
  8. }
  9. },
  10. data () {
  11. return {}
  12. },
  13. render () {
  14. const { $route: { meta }, $store: { getters } } = this
  15. const inKeep = (
  16. <keep-alive>
  17. <router-view key={ this.$route.fullPath }/>
  18. </keep-alive>
  19. )
  20. const notKeep = (
  21. <router-view key={ this.$route.fullPath }/>
  22. )
  23. // 这里增加了 multiTab 的判断,当开启了 multiTab 时
  24. // 应当全部组件皆缓存,否则会导致切换页面后页面还原成原始状态
  25. // 若确实不需要,可改为 return meta.keepAlive ? inKeep : notKeep
  26. // if (!getters.multiTab && !meta.keepAlive) {
  27. // return notKeep
  28. // }
  29. // return this.keepAlive || getters.multiTab || meta.keepAlive ? inKeep : notKeep
  30. return meta.keepAlive ? inKeep : notKeep
  31. }
  32. }
  33. </script>