首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有React Router的MUI面包屑-定制面包屑标签

带有React Router的MUI面包屑-定制面包屑标签
EN

Stack Overflow用户
提问于 2020-07-05 19:52:46
回答 1查看 269关注 0票数 1

这里,我在breadcrumbs和MUI和React路由器上的实现。

代码语言:javascript
复制
import React from "react";
import {
  Breadcrumbs as AppBreadcrumbs,
  Link,
  Typography,
} from "@material-ui/core";
import { withRouter } from "react-router-dom";

const Breadcrumbs = (props) => {
  const {
    history,
    location: { pathname },
  } = props;

  const pathnames = pathname.split("/").filter((x) => x);

  return (
    <AppBreadcrumbs aria-label="breadcrumb">
      <Link onClick={() => history.push("/")}>Home</Link>
      {pathnames.map((name, index) => {
        const goTo = `/${pathnames.slice(0, index + 1).join("/")}`;
        const active = index === pathnames.length - 1;
        return active ? (
          <Typography>{name}</Typography>
        ) : (
          <Link onClick={() => history.push(goTo)}>{name}</Link>
        );
      })}
    </AppBreadcrumbs>
  );
};

export default withRouter(Breadcrumbs);

一切正常,但是我对面包屑的标签有问题。我有这3个页面,它们的链接如下:"book-table""food-delivery""sponsor"

这就是它们在我的页面上的显示方式:

代码语言:javascript
复制
Home / book-table
Home / food-delivery
Home / sponsor

我怎么能像这样为每个面包屑定制标签呢?如果它在book-table页面上,它将显示如下:Home / Book a Table。如果是在food-delivery上,它会像这样显示:Home / Order Food等等。

EN

Stack Overflow用户

发布于 2020-07-05 20:00:42

由于没有清晰的模式可用于转换路径名,因此我建议创建一个config对象并对其进行迭代,例如:

代码语言:javascript
复制
const routes = [{
  path: '/book-table',
  title: 'Book Table'
}]

return routers.map(x => return <SomeBreadcumb route={x.route}>{x.title}</SomeBreadcumb>)

这样你的代码会更整洁,更易读,更容易维护。例如:您可能希望根据用户的语言偏好更改标题,这样会比您决定采用的方法更容易。

希望这能有所帮助

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62740315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档