当前位置:首页 > React

react中实现breadcrumb例子

2026-01-27 15:05:27React

实现基础面包屑导航

在React中实现面包屑导航可以通过手动管理路径或使用路由库(如react-router-dom)动态生成。以下是一个基于react-router-dom v6的示例:

安装依赖:

npm install react-router-dom

创建面包屑组件:

import { Link, useLocation } from 'react-router-dom';

const Breadcrumbs = () => {
  const location = useLocation();
  let currentLink = '';

  const crumbs = location.pathname.split('/')
    .filter(crumb => crumb !== '')
    .map(crumb => {
      currentLink += `/${crumb}`;
      return (
        <div className="crumb" key={crumb}>
          <Link to={currentLink}>{crumb}</Link>
        </div>
      );
    });

  return <div className="breadcrumbs">{crumbs}</div>;
};

自定义面包屑显示文本

如果需要显示更友好的文本而非路径名称,可以创建映射关系:

react中实现breadcrumb例子

const Breadcrumbs = () => {
  const location = useLocation();
  const pathMap = {
    'products': '产品列表',
    'detail': '商品详情',
    'cart': '购物车'
  };

  let currentLink = '';

  const crumbs = location.pathname.split('/')
    .filter(crumb => crumb !== '')
    .map(crumb => {
      currentLink += `/${crumb}`;
      return (
        <div className="crumb" key={crumb}>
          <Link to={currentLink}>{pathMap[crumb] || crumb}</Link>
        </div>
      );
    });

  return <div className="breadcrumbs">{crumbs}</div>;
};

添加分隔符和样式

为面包屑添加样式和分隔符:

// CSS
.breadcrumbs {
  display: flex;
  padding: 10px;
  gap: 5px;
}

.crumb::after {
  content: '>';
  margin-left: 5px;
}

.crumb:last-child::after {
  display: none;
}

.crumb a {
  color: #007bff;
  text-decoration: none;
}

.crumb:last-child a {
  color: #6c757d;
  pointer-events: none;
}

使用第三方库

对于更复杂的需求,可以使用专门的面包屑库如use-react-router-breadcrumbs

react中实现breadcrumb例子

安装:

npm install use-react-router-breadcrumbs

使用示例:

import { useBreadcrumbs } from 'use-react-router-breadcrumbs';

const Breadcrumbs = () => {
  const breadcrumbs = useBreadcrumbs();

  return (
    <div className="breadcrumbs">
      {breadcrumbs.map(({ breadcrumb, match }, index) => (
        <span key={match.pathname}>
          {index > 0 && ' > '}
          {breadcrumb}
        </span>
      ))}
    </div>
  );
};

动态路由参数处理

处理带参数的路由(如/products/:id):

const routes = [
  { path: '/products', breadcrumb: '产品' },
  { path: '/products/:id', breadcrumb: '产品详情' }
];

const Breadcrumbs = () => {
  const location = useLocation();
  const matchRoutes = matchRoutes(routes, location);

  return (
    <div className="breadcrumbs">
      {matchRoutes?.map(({ route, match }, index) => (
        <span key={match.pathname}>
          {index > 0 && ' > '}
          <Link to={match.pathname}>
            {typeof route.breadcrumb === 'function' 
              ? route.breadcrumb({ match }) 
              : route.breadcrumb}
          </Link>
        </span>
      ))}
    </div>
  );
};

标签: 例子react
分享给朋友:

相关文章

vue实现例子

vue实现例子

以下是 Vue.js 的几个常见实现例子,涵盖基础到进阶场景,采用清晰的模块化展示方式: 基础数据绑定与事件处理 <template> <div> <…

如何构建react

如何构建react

构建 React 项目的步骤 安装 Node.js 和 npm 确保系统已安装 Node.js(包含 npm)。可通过命令行验证: node -v npm -v 使用 Create React Ap…

react如何通信

react如何通信

React 组件通信方式 React 组件间的通信方式多样,具体选择取决于组件关系和场景需求。以下是常见方法: 父子组件通信 父组件通过 props 向子组件传递数据,子组件通过回调函数通知父组件…

react native如何

react native如何

React Native 基础知识 React Native 是一个由 Facebook 开发的框架,用于使用 JavaScript 和 React 构建跨平台移动应用。它允许开发者编写一次代码,同时…

react如何引入echarts

react如何引入echarts

安装 ECharts 依赖 在 React 项目中安装 ECharts 核心库和 React 封装库: npm install echarts echarts-for-react 基础引入方式 创建…

react项目如何调试

react项目如何调试

使用浏览器开发者工具 React项目调试最直接的方法是使用浏览器内置的开发者工具(Chrome DevTools/Firefox Developer Tools)。打开开发者工具后,切换到“Sourc…