Skip to content

Commit

Permalink
fix(layout): Provide a hack method to bypass the breadcrumb error che…
Browse files Browse the repository at this point in the history
…ck of antd and remove the error message.

close #6790
  • Loading branch information
chenshuai2144 committed Mar 18, 2023
1 parent 5de24b7 commit bcb32b9
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 5 deletions.
1 change: 1 addition & 0 deletions packages/layout/src/demos/base.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -297,6 +297,7 @@ export default () => {
menu={{
collapsedShowGroupTitle: true,
}}
itemRender={(item) => <a>{item.title}</a>}
avatarProps={{
src: 'https://gw.alipayobjects.com/zos/antfincdn/efFD%24IOql2/weixintupian_20170331104822.jpg',
size: 'small',
Expand Down
21 changes: 16 additions & 5 deletions packages/layout/src/utils/getBreadcrumbProps.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ export type BreadcrumbProLayoutProps = {
breadcrumbRender?: WithFalse<
(routers: AntdBreadcrumbProps['items']) => AntdBreadcrumbProps['items']
>;
itemRender?: AntdBreadcrumbProps['items'];
itemRender?: AntdBreadcrumbProps['itemRender'];
};

// 渲染Breadcrumb 子节点
Expand Down Expand Up @@ -110,14 +110,14 @@ const conversionFromLocation = (
const { hideInBreadcrumb } = currentBreadcrumb;
return name && !hideInBreadcrumb
? {
path: url,
linkPath: url,
breadcrumbName: name,
title: name,
component: currentBreadcrumb.component,
}
: { path: '', breadcrumbName: '', title: '' };
: { linkPath: '', breadcrumbName: '', title: '' };
})
.filter((item) => item && item.path);
.filter((item) => item && item.linkPath);

return extraBreadcrumbItems;
};
Expand Down Expand Up @@ -157,7 +157,18 @@ export const getBreadcrumbProps = (
// 生成面包屑的路由数组,该数组中包含菜单项和面包屑项
const routesArray = genBreadcrumbProps(props);
// 如果props中有itemRender,则使用props中的itemRender,否则使用默认函数defaultItemRender
const itemRender = propsItemRender || defaultItemRender;
const itemRender: AntdBreadcrumbProps['itemRender'] = (item, ...rest) => {
const renderFunction = propsItemRender || defaultItemRender;
return renderFunction?.(
{
...item,
// 如果item.linkPath存在,则使用item.linkPath,否则使用item.path
// @ts-ignore
path: item.linkPath || item.path,
},
...rest,
);
};
let items = routesArray as ItemType[] | undefined;
// 如果面包屑渲染函数breadcrumbRender存在,则使用其渲染数组items
if (breadcrumbRender) {
Expand Down

0 comments on commit bcb32b9

Please sign in to comment.