getPageTitle.js 879 B

123456789101112131415161718192021222324252627
  1. import { formatMessage } from 'umi/locale';
  2. import pathToRegexp from 'path-to-regexp';
  3. import isEqual from 'lodash/isEqual';
  4. import memoizeOne from 'memoize-one';
  5. import { menu, title } from '../defaultSettings';
  6. export const matchParamsPath = (pathname, breadcrumbNameMap) => {
  7. const pathKey = Object.keys(breadcrumbNameMap).find(key => pathToRegexp(key).test(pathname));
  8. return breadcrumbNameMap[pathKey];
  9. };
  10. const getPageTitle = (pathname, breadcrumbNameMap) => {
  11. const currRouterData = matchParamsPath(pathname, breadcrumbNameMap);
  12. if (!currRouterData) {
  13. return title;
  14. }
  15. const pageName = menu.disableLocal
  16. ? currRouterData.name
  17. : formatMessage({
  18. id: currRouterData.locale || currRouterData.name,
  19. defaultMessage: currRouterData.name,
  20. });
  21. return `${pageName} - ${title}`;
  22. };
  23. export default memoizeOne(getPageTitle, isEqual);