跳转至

MBreadcrumb 组件文档

组件概述

MBreadcrumb 是一个增强型面包屑导航组件,结合了 Ant Design 的 BreadcrumbAffix 组件,提供固定定位的面包屑导航和可定制的操作按钮区域。

组件属性 (Props)

IMBreadcrumbProps

属性名 类型 默认值 描述
routes RouteItem[] - 面包屑导航的路由配置数组
customItems IRowItem[] - 自定义操作按钮配置数组(使用 ItemsRow 组件渲染)
style React.CSSProperties - 容器 div 的行内样式
className string - 容器 div 的额外类名
offsetTop number 64 Affix 组件距离顶部的偏移量(像素)
mainAppBaseUrl string - 主应用基础 URL,用于构建完整路由路径
microAppName string - 微应用名称,用于构建完整路由路径

RouteItem (路由项配置)

属性名 类型 描述
name string 路由显示名称
url string 路由路径(可选)

使用示例

基本用法

<MBreadcrumb
    routes={[{ name: '首页', url: '/' }, { name: '用户管理', url: '/users' }, { name: '用户详情' }]}
/>

带操作按钮

<MBreadcrumb
  routes={[...]}
  customItems={[
    { label: '编辑', type: 'primary', onClick: handleEdit },
    { label: '删除', type: 'default', onClick: handleDelete }
  ]}
/>

自定义样式和定位

<MBreadcrumb
  routes={[...]}
  className="custom-breadcrumb"
  style={{ marginBottom: 16 }}
  offsetTop={80}
/>

微前端场景使用

<MBreadcrumb
    routes={[
        { name: '主应用', url: '/' },
        { name: '订单模块', url: '/orders' },
    ]}
    mainAppBaseUrl='/main-app'
    microAppName='order-app'
/>

功能特性

  • 固定定位:通过 Affix 组件实现滚动时固定定位
  • 路由生成:自动处理主应用和微应用的路由拼接
  • 响应式滚动:监听滚动事件并更新 Affix 位置
  • 主题支持:通过 CompThemeProvider 支持主题配置
  • 操作按钮区:右侧可配置自定义操作按钮

CSS 类名结构

组件生成的 HTML 结构包含以下类名:

  • 容器: m-breadcrumb
  • 卡片容器: m-breadcrumb-container
  • 卡片内容: m-breadcrumb-body
  • 面包屑区域: m-breadcrumb-inner-breadcrumb
  • 操作按钮容器: m-breadcrumb-custom-item-wrapper

可以通过这些类名来自定义样式:

/* 自定义面包屑容器样式 */
.m-breadcrumb {
    background: #fff;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);

    &-container {
        padding: 12px 24px;
    }

    /* 自定义面包屑文字大小 */
    &-inner-breadcrumb {
        font-size: 16px !important;
    }
}

方法说明

  • getUrl(url: string)
  • 处理路由 URL 的方法,用于拼接主应用和微应用的基础路径:
  • 去除 URL 开头的斜杠
  • 拼接顺序:mainAppBaseUrl + microAppName + cleanedUrl
  • 过滤空值并添加前导斜杠

示例:

getUrl('/users');
// 输入: '/users'
// 输出: '/main-app/order-app/users'
// (当 mainAppBaseUrl='/main-app' 且 microAppName='order-app')

注意事项

  • 组件内部监听了 scroll 事件,确保在组件卸载时正确移除监听器
  • 使用 Affix 组件需要确保父容器有足够的空间和正确的定位上下文
  • customItems 属性将传递给 ItemsRow 组件渲染
  • 当 url 为空时,面包屑项将渲染为纯文本而非链接