index.vue 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. <script setup lang="ts">
  2. import { NCard, NAlert, NButton } from 'naive-ui'
  3. import { RouterLink, useRouter } from 'vue-router'
  4. import { ContentWrapper } from '@/components'
  5. import { useInjection } from '@/composables'
  6. import { mediaQueryInjectionKey } from '@/injection'
  7. const { isMediumScreen } = useInjection(mediaQueryInjectionKey)
  8. defineOptions({
  9. name: 'DynamicRoute',
  10. })
  11. const router = useRouter()
  12. </script>
  13. <template>
  14. <ContentWrapper content-class="flex flex-col gap-y-2">
  15. <NAlert
  16. type="info"
  17. closable
  18. >
  19. 在路由配置的 meta 中添加 enableMultiTab 属性,访问不同的动态路径时都会创建新的 tab
  20. </NAlert>
  21. <NCard :size="isMediumScreen ? 'small' : undefined">
  22. <div class="grid grid-cols-5 gap-4 max-lg:grid-cols-3 max-md:grid-cols-2 max-sm:grid-cols-1">
  23. <RouterLink
  24. v-for="value in 50"
  25. :key="value"
  26. :to="value <= 25 ? `/dynamic-route/${value}` : `/dynamic-route/${value}/${value}`"
  27. >
  28. <NButton
  29. block
  30. secondary
  31. :type="
  32. [`/dynamic-route/${value}`, `/dynamic-route/${value}/${value}`].includes(
  33. router.currentRoute.value.fullPath,
  34. )
  35. ? 'primary'
  36. : 'default'
  37. "
  38. >
  39. {{
  40. value <= 25 ? `/dynamic-route/${value}` : `/dynamic-route/${value}/${value}`
  41. }}</NButton
  42. >
  43. </RouterLink>
  44. </div>
  45. </NCard>
  46. </ContentWrapper>
  47. </template>