Przeglądaj źródła

menu decoupling umi/local

陈帅 7 lat temu
rodzic
commit
8b743adb2b
2 zmienionych plików z 21 dodań i 22 usunięć
  1. 2 3
      src/components/SiderMenu/BaseMenu.js
  2. 19 19
      src/layouts/BasicLayout.js

+ 2 - 3
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;

+ 19 - 19
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);
 }