index.vue 1.4 KB

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