RouteView.vue 917 B

1234567891011121314151617181920212223242526272829303132333435
  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 />
  18. </keep-alive>
  19. )
  20. const notKeep = (
  21. <router-view />
  22. )
  23. // 这里增加了 multiTab 的判断,当开启了 multiTab 时
  24. // 应当全部组件皆缓存,否则会导致切换页面后页面还原成原始状态
  25. // 若确实不需要,可改为 return meta.keepAlive ? inKeep : notKeep
  26. // if (!getters.multiTab && !meta.keepAlive) { // 原逻辑
  27. // return notKeep
  28. // }
  29. if (!meta.keepAlive) { // 不管是不是多页签模式,均不要缓存
  30. return notKeep
  31. }
  32. return this.keepAlive || getters.multiTab || meta.keepAlive ? inKeep : notKeep
  33. }
  34. }
  35. </script>