Browse Source

menu decoupling umi/local

pull/2650/head
陈帅 8 years ago
parent
commit
8b743adb2b
  1. 5
      src/components/SiderMenu/BaseMenu.js
  2. 38
      src/layouts/BasicLayout.js

5
src/components/SiderMenu/BaseMenu.js

@ -3,7 +3,6 @@ import { Menu, Icon } from 'antd';
import Link from 'umi/link';
import isEqual from 'lodash/isEqual';
import memoizeOne from 'memoize-one';
import { formatMessage } from 'umi/locale';
import pathToRegexp from 'path-to-regexp';
import { urlToList } from '../_utils/pathTools';
import styles from './index.less';
@ -83,7 +82,7 @@ export default class BaseMenu extends PureComponent {
getSubMenuOrItem = item => {
// doc: add hideChildrenInMenu
if (item.children && !item.hideChildrenInMenu && item.children.some(child => child.name)) {
const name = item.locale ? formatMessage({ id: item.locale }) : item.name;
const { name } = item;
return (
<SubMenu
title={
@ -111,7 +110,7 @@ export default class BaseMenu extends PureComponent {
* @memberof SiderMenu
*/
getMenuItemPath = item => {
const name = item.locale ? formatMessage({ id: item.locale }) : item.name;
const { name } = item;
const itemPath = this.conversionPath(item.path);
const icon = getIcon(item.icon);
const { target } = item;

38
src/layouts/BasicLayout.js

@ -24,30 +24,30 @@ const { Content } = Layout;
function formatter(data, parentAuthority, parentName) {
return data
.map(item => {
if (!item.name || !item.path) {
return null;
}
let locale = 'menu';
if (parentName && item.name) {
if (parentName) {
locale = `${parentName}.${item.name}`;
} else if (item.name) {
} else {
locale = `menu.${item.name}`;
} else if (parentName) {
locale = parentName;
}
if (item.path) {
const result = {
...item,
locale,
authority: item.authority || parentAuthority,
};
if (item.routes) {
const children = formatter(item.routes, item.authority, locale);
// Reduce memory usage
result.children = children;
}
delete result.routes;
return result;
}
return null;
const result = {
...item,
name: formatMessage({ id: locale, defaultMessage: item.name }),
locale,
authority: item.authority || parentAuthority,
};
if (item.routes) {
const children = formatter(item.routes, item.authority, locale);
// Reduce memory usage
result.children = children;
}
delete result.routes;
return result;
})
.filter(item => item);
}

Loading…
Cancel
Save