如何使用vue3+ts封装一个面包屑组件

Vue3 + TypeScript 封装面包屑组件

面包屑是一种常见的导航组件,通常用于展示当前页面所处的位置,让用户随时了解自己的位置。本文将介绍如何使用 Vue3 和 TypeScript 来封装一个面包屑组件。

1. 创建面包屑组件

我们首先需要创建一个 Vue3 组件来实现面包屑的功能。在这个组件中,我们需要接收一个 routes 数组作为参数,然后根据路由信息来生成面包屑。

vue

Copy

<template>
  <div class="breadcrumb">
    <ul>
      <li v-for="(route, index) in routes" :key="route.path">
        <router-link :to="route.path">{
   
   { route.meta.title }}</router-link>
        <span v-if="index !== routes.length - 1">/</span>
      </li>
    </ul>
  </div>
</template>

<script lang="ts">
import { defineComponent, PropType } from 'vue'
import { RouteRecordRaw } from 'vue-router'

export default defineComponent({
  name: 'Breadcrumb',
  props: {
    routes: {
      type: Array as PropType<RouteRecordRaw[]>,
      required: true,
      default: () => []
    }
  }
})
</script>

在这个组件中,我们使用了一个名为 routes 的 props 属性来接收路由信息。在组件的模板中,我们使用 v-for 指令来遍历 routes 数组,并生成对应的面包屑。我们使用了 router-link 组件来实现路由跳转,同时在每个面包屑之间添加了一个斜杠分隔符。

2. 使用面包屑组件

在创建好面包屑组件之后,我们可以在其他组件中使用它。例如,我们可以在 App.vue 组件中使用面包屑组件来显示当前页面所处的位置。

vue

Copy

<template>
  <div>
    <breadcrumb :routes="routes"></breadcrumb>
    <router-view></router-view>
  </div>
</template>

<script lang="ts">
import { defineComponent, computed } from 'vue'
import Breadcrumb from './Breadcrumb.vue'
import { RouteRecordRaw, useRoute } from 'vue-router'

export default defineComponent({
  name: 'App',
  components: {
    Breadcrumb
  },
  setup() {
    const route = useRoute()
    const routes = computed(() => {
      const routes: RouteRecordRaw[] = []
      let currentRoute = route.value
      while (currentRoute) {
        routes.unshift(currentRoute)
        currentRoute = currentRoute.parent as RouteRecordRaw
      }
      return routes
    })
    return { routes }
  }
})
</script>

在这个示例中,我们在 App.vue 组件中使用了 computedsetup 函数来计算当前页面所处的位置。我们首先使用 useRoute 函数来获取当前路由信息,然后定义了一个名为 routes 的计算属性来计算当前路由和其父路由的信息。我们使用了 while 循环来遍历当前路由和其父路由,将它们依次添加到 routes 数组中。最终,我们将这个 routes 数组作为 props 传递给面包屑组件,从而生成对应的面包屑。

3. 总结

在本文中,我们介绍了如何使用 Vue3 和 TypeScript 来封装一个面包屑组件。通过这个组件,我们可以方便地生成各种复杂的面包屑,让用户随时了解自己的位置。同时,使用 Vue3 和 TypeScript 进行开发可以让我们更加高效地构建应用程序。

猜你喜欢

转载自blog.csdn.net/m0_70718568/article/details/130337855