Breadcrumb面包屑 - 图1

Breadcrumb 面包屑

显示当前页面在系统层级结构中的位置,并能向上返回。

何时使用

  • 当系统拥有超过两级以上的层级结构时;
  • 当需要告知用户『你在哪里』时;
  • 当需要向上导航的功能时。

代码演示

Breadcrumb面包屑 - 图2

基本

最简单的用法。

  1. <template>
  2. <a-breadcrumb>
  3. <a-breadcrumb-item>Home</a-breadcrumb-item>
  4. <a-breadcrumb-item><a href="">Application Center</a></a-breadcrumb-item>
  5. <a-breadcrumb-item><a href="">Application List</a></a-breadcrumb-item>
  6. <a-breadcrumb-item>An Application</a-breadcrumb-item>
  7. </a-breadcrumb>
  8. </template>

Breadcrumb面包屑 - 图3

其它路由

vue-router 进行结合使用。

  1. <template>
  2. <div>
  3. <a-breadcrumb :routes="routes">
  4. <template #itemRender="{ route, routes, paths }">
  5. <span v-if="routes.indexOf(route) === routes.length - 1">
  6. {{ route.breadcrumbName }}
  7. </span>
  8. <router-link v-else :to="`${basePath}/${paths.join('/')}`">
  9. {{ route.breadcrumbName }}
  10. </router-link>
  11. </template>
  12. </a-breadcrumb>
  13. <br />
  14. {{ $route.path }}
  15. </div>
  16. </template>
  17. <script lang="ts">
  18. import { defineComponent, ref } from 'vue';
  19. interface Route {
  20. path: string;
  21. breadcrumbName: string;
  22. children?: Array<{
  23. path: string;
  24. breadcrumbName: string;
  25. }>;
  26. }
  27. export default defineComponent({
  28. setup() {
  29. const routes = ref<Route[]>([
  30. {
  31. path: 'index',
  32. breadcrumbName: 'home',
  33. },
  34. {
  35. path: 'first',
  36. breadcrumbName: 'first',
  37. children: [
  38. {
  39. path: '/general',
  40. breadcrumbName: 'General',
  41. },
  42. {
  43. path: '/layout',
  44. breadcrumbName: 'Layout',
  45. },
  46. {
  47. path: '/navigation',
  48. breadcrumbName: 'Navigation',
  49. },
  50. ],
  51. },
  52. {
  53. path: 'second',
  54. breadcrumbName: 'second',
  55. },
  56. ]);
  57. return {
  58. basePath: '/components/breadcrumb',
  59. routes,
  60. };
  61. },
  62. });
  63. </script>

Breadcrumb面包屑 - 图4

分隔符

使用 Breadcrumb.Separator 可以自定义分隔符。

  1. <template>
  2. <a-breadcrumb separator="">
  3. <a-breadcrumb-item>Location</a-breadcrumb-item>
  4. <a-breadcrumb-separator>:</a-breadcrumb-separator>
  5. <a-breadcrumb-item href="">Application Center</a-breadcrumb-item>
  6. <a-breadcrumb-separator />
  7. <a-breadcrumb-item href="">Application List</a-breadcrumb-item>
  8. <a-breadcrumb-separator />
  9. <a-breadcrumb-item>An Application</a-breadcrumb-item>
  10. </a-breadcrumb>
  11. </template>

Breadcrumb面包屑 - 图5

带下拉菜单的面包屑

面包屑支持下拉菜单。

  1. <template>
  2. <a-breadcrumb>
  3. <a-breadcrumb-item>Ant Design Vue</a-breadcrumb-item>
  4. <a-breadcrumb-item><a href="">Component</a></a-breadcrumb-item>
  5. <a-breadcrumb-item>
  6. <a href="">General</a>
  7. <template #overlay>
  8. <a-menu>
  9. <a-menu-item>
  10. <a target="_blank" rel="noopener noreferrer" href="http://www.alipay.com/">General</a>
  11. </a-menu-item>
  12. <a-menu-item>
  13. <a target="_blank" rel="noopener noreferrer" href="http://www.taobao.com/">Layout</a>
  14. </a-menu-item>
  15. <a-menu-item>
  16. <a target="_blank" rel="noopener noreferrer" href="http://www.tmall.com/">Navigation</a>
  17. </a-menu-item>
  18. </a-menu>
  19. </template>
  20. </a-breadcrumb-item>
  21. <a-breadcrumb-item>Button</a-breadcrumb-item>
  22. </a-breadcrumb>
  23. </template>

Breadcrumb面包屑 - 图6

Breadcrumb面包屑 - 图7

分隔符

separator=">"可以自定义分隔符,或者使用slot=”separator”自定义更复杂的分隔符

  1. <template>
  2. <a-breadcrumb separator=">">
  3. <a-breadcrumb-item>Home</a-breadcrumb-item>
  4. <a-breadcrumb-item href="">Application Center</a-breadcrumb-item>
  5. <a-breadcrumb-item href="">Application List</a-breadcrumb-item>
  6. <a-breadcrumb-item>An Application</a-breadcrumb-item>
  7. </a-breadcrumb>
  8. <a-breadcrumb>
  9. <template #separator><span style="color: red">></span></template>
  10. <a-breadcrumb-item>Home</a-breadcrumb-item>
  11. <a-breadcrumb-item href="">Application Center</a-breadcrumb-item>
  12. <a-breadcrumb-item href="">Application List</a-breadcrumb-item>
  13. <a-breadcrumb-item>An Application</a-breadcrumb-item>
  14. </a-breadcrumb>
  15. </template>

Breadcrumb面包屑 - 图8

带有图标的

图标放在文字前面。

  1. <template>
  2. <a-breadcrumb>
  3. <a-breadcrumb-item href="">
  4. <home-outlined />
  5. </a-breadcrumb-item>
  6. <a-breadcrumb-item href="">
  7. <user-outlined />
  8. <span>Application List</span>
  9. </a-breadcrumb-item>
  10. <a-breadcrumb-item>Application</a-breadcrumb-item>
  11. </a-breadcrumb>
  12. </template>
  13. <script lang="ts">
  14. import { defineComponent } from 'vue';
  15. import { HomeOutlined, UserOutlined } from '@ant-design/icons-vue';
  16. export default defineComponent({
  17. components: {
  18. HomeOutlined,
  19. UserOutlined,
  20. },
  21. });
  22. </script>

API

参数说明类型可选值默认值
itemRender自定义链接函数,和 vue-router 配置使用, 也可使用 #itemRender=”props”({route, params, routes, paths}) => vNode-
params路由的参数object-
routesrouter 的路由栈信息routes[]-
separator分隔符自定义string|slot‘/‘

Breadcrumb.Item

参数参数类型默认值版本
href链接的目的地string-1.5.0
overlay下拉菜单的内容Menu | () => Menu-1.5.0

事件

事件名称说明回调参数版本
click单击事件(e:MouseEvent)=>void-

Breadcrumb.Separator 1.5.0

参数类型默认值版本
----

注意:在使用 Breadcrumb.Separator 时,其父组件的分隔符必须设置为 separator="",否则会出现父组件默认的分隔符。

routes

  1. interface Route {
  2. path: string;
  3. breadcrumbName: string;
  4. children?: Array<{
  5. path: string;
  6. breadcrumbName: string;
  7. }>;
  8. }

和 browserHistory 配合

和 vue-router 一起使用时,默认生成的 url 路径是带有 # 的,如果和 browserHistory 一起使用的话,你可以使用 itemRender 属性定义面包屑链接。

  1. <template>
  2. <a-breadcrumb :routes="routes">
  3. <template #itemRender="{ route, params, routes, paths }">
  4. <span v-if="routes.indexOf(route) === routes.length - 1">
  5. {{route.breadcrumbName}}
  6. </span>
  7. <router-link v-else :to="paths.join('/')">
  8. {{route.breadcrumbName}}
  9. </router-link>
  10. </template>
  11. </a-breadcrumb>
  12. </template>
  13. <script lang="ts">
  14. import { defineComponent, ref } from 'vue';
  15. interface Route {
  16. path: string;
  17. breadcrumbName: string;
  18. children?: Array<{
  19. path: string;
  20. breadcrumbName: string;
  21. }>;
  22. }
  23. export default defineComponent({
  24. setup () {
  25. const routes = ref<Route[]>([
  26. {
  27. path: 'index',
  28. breadcrumbName: 'home',
  29. },
  30. {
  31. path: 'first',
  32. breadcrumbName: 'first',
  33. children: [
  34. {
  35. path: '/general',
  36. breadcrumbName: 'General',
  37. },
  38. {
  39. path: '/layout',
  40. breadcrumbName: 'Layout',
  41. },
  42. {
  43. path: '/navigation',
  44. breadcrumbName: 'Navigation',
  45. },
  46. ],
  47. },
  48. {
  49. path: 'second',
  50. breadcrumbName: 'second',
  51. },
  52. ]);
  53. return {
  54. routes,
  55. }
  56. }
  57. });
  58. </script>