index.jsx 979 B

12345678910111213141516171819202122232425262728293031
  1. import { defineComponent, KeepAlive } from 'vue'
  2. import { getFullPathWithoutHash } from '../helper'
  3. import { isSubApp } from '../../cip-subapp-container/micro-app/util'
  4. export default defineComponent({
  5. name: 'CipRouterView',
  6. props: {
  7. viewKey: String,
  8. noViewKey: { type: Boolean, default: undefined },
  9. cacheList: Array
  10. },
  11. setup (props) {
  12. return () => (
  13. <router-view>
  14. {{
  15. default: ({ Component, route, ...args }) => {
  16. // TODO: 直接修改name可能导致的问题位置
  17. if (!isSubApp(route.name)) {
  18. // 不对子应用进行相关操作
  19. if (Component && !props.noViewKey) {
  20. Component.type.name = getFullPathWithoutHash(route.fullPath)
  21. }
  22. }
  23. return <KeepAlive include={props.cacheList}>
  24. {Component && <Component key={props.viewKey}/>}
  25. </KeepAlive>
  26. }
  27. }}
  28. </router-view>
  29. )
  30. }
  31. })