|
|
|
@ -6,6 +6,18 @@ import styles from './index.less'; |
|
|
|
|
|
|
|
const { TabPane } = Tabs; |
|
|
|
|
|
|
|
function getBreadcrumbNameWithParams(breadcrumbNameMap, url) { |
|
|
|
let name = ''; |
|
|
|
Object.keys(breadcrumbNameMap).forEach((item) => { |
|
|
|
const itemRegExpStr = `^${item.replace(/:[\w-]+/g, '[\\w-]+')}$`; |
|
|
|
const itemRegExp = new RegExp(itemRegExpStr); |
|
|
|
if (itemRegExp.test(url)) { |
|
|
|
name = breadcrumbNameMap[item]; |
|
|
|
} |
|
|
|
}); |
|
|
|
return name; |
|
|
|
} |
|
|
|
|
|
|
|
export default class PageHeader extends PureComponent { |
|
|
|
static contextTypes = { |
|
|
|
routes: PropTypes.array, |
|
|
|
@ -59,9 +71,14 @@ export default class PageHeader extends PureComponent { |
|
|
|
const url = `/${pathSnippets.slice(0, index + 1).join('/')}`; |
|
|
|
return ( |
|
|
|
<Breadcrumb.Item key={url}> |
|
|
|
{createElement(index === pathSnippets.length - 1 ? 'span' : linkElement, { |
|
|
|
[linkElement === 'a' ? 'href' : 'to']: url, |
|
|
|
}, breadcrumbNameMap[url] || breadcrumbNameMap[url.replace('/', '')] || url)} |
|
|
|
{createElement( |
|
|
|
index === pathSnippets.length - 1 ? 'span' : linkElement, |
|
|
|
{ [linkElement === 'a' ? 'href' : 'to']: url }, |
|
|
|
breadcrumbNameMap[url] || |
|
|
|
breadcrumbNameMap[url.replace('/', '')] || |
|
|
|
getBreadcrumbNameWithParams(breadcrumbNameMap, url) || |
|
|
|
url |
|
|
|
)} |
|
|
|
</Breadcrumb.Item> |
|
|
|
); |
|
|
|
}); |
|
|
|
|