Commit 4ff721fa authored by afc163's avatar afc163

Refactor breadcrumbMap

parent faec7edc
...@@ -6,16 +6,23 @@ import styles from './index.less'; ...@@ -6,16 +6,23 @@ import styles from './index.less';
const { TabPane } = Tabs; const { TabPane } = Tabs;
function getBreadcrumbNameWithParams(breadcrumbNameMap, url) { function getBreadcrumbName(breadcrumbNameMap, url) {
let name = ''; if (breadcrumbNameMap[url] && breadcrumbNameMap[url].name) {
return breadcrumbNameMap[url].name;
}
const urlWithoutSplash = url.replace(/\/$/, '');
if (breadcrumbNameMap[urlWithoutSplash] && breadcrumbNameMap[urlWithoutSplash].name) {
return breadcrumbNameMap[urlWithoutSplash].name;
}
let breadcrumbName = '';
Object.keys(breadcrumbNameMap).forEach((item) => { Object.keys(breadcrumbNameMap).forEach((item) => {
const itemRegExpStr = `^${item.replace(/:[\w-]+/g, '[\\w-]+')}$`; const itemRegExpStr = `^${item.replace(/:[\w-]+/g, '[\\w-]+')}$`;
const itemRegExp = new RegExp(itemRegExpStr); const itemRegExp = new RegExp(itemRegExpStr);
if (itemRegExp.test(url)) { if (itemRegExp.test(url)) {
name = breadcrumbNameMap[item]; breadcrumbName = breadcrumbNameMap[item].name;
} }
}); });
return name; return breadcrumbName || url;
} }
export default class PageHeader extends PureComponent { export default class PageHeader extends PureComponent {
...@@ -72,12 +79,9 @@ export default class PageHeader extends PureComponent { ...@@ -72,12 +79,9 @@ export default class PageHeader extends PureComponent {
return ( return (
<Breadcrumb.Item key={url}> <Breadcrumb.Item key={url}>
{createElement( {createElement(
index === pathSnippets.length - 1 ? 'span' : linkElement, (index === pathSnippets.length - 1) ? 'span' : linkElement,
{ [linkElement === 'a' ? 'href' : 'to']: url }, { [linkElement === 'a' ? 'href' : 'to']: url },
breadcrumbNameMap[url] || getBreadcrumbName(breadcrumbNameMap, url),
breadcrumbNameMap[url.replace('/', '')] ||
getBreadcrumbNameWithParams(breadcrumbNameMap, url) ||
url
)} )}
</Breadcrumb.Item> </Breadcrumb.Item>
); );
......
...@@ -61,7 +61,10 @@ class BasicLayout extends React.PureComponent { ...@@ -61,7 +61,10 @@ class BasicLayout extends React.PureComponent {
const breadcrumbNameMap = {}; const breadcrumbNameMap = {};
routeData.concat(menuData).forEach((item) => { routeData.concat(menuData).forEach((item) => {
breadcrumbNameMap[item.path] = item.name; breadcrumbNameMap[item.path] = {
name: item.name,
component: item.component,
};
}); });
return { location, breadcrumbNameMap }; return { location, breadcrumbNameMap };
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment