Просмотр исходного кода

route authority attribute behavior no use while (#3522)

* route authority attribute behavior no use while
陈小聪 7 лет назад
Родитель
Сommit
837b8c232d
1 измененных файлов с 16 добавлено и 18 удалено
  1. 16 18
      src/layouts/BasicLayout.js

+ 16 - 18
src/layouts/BasicLayout.js

@@ -90,27 +90,25 @@ class BasicLayout extends React.Component {
 
   getRouteAuthority = (pathname, routeData) => {
     const routes = routeData.slice(); // clone
-    let authorities;
-
-    while (routes.length > 0) {
-      const route = routes.shift();
-      // check partial route
-      if (pathToRegexp(`${route.path}(.*)`).test(pathname)) {
-        if (route.authority) {
-          authorities = route.authority;
-        }
-        // is exact route?
-        if (pathToRegexp(route.path).test(pathname)) {
-          break;
-        }
 
-        if (route.routes) {
-          route.routes.forEach(r => routes.push(r));
+    const getAuthority = (routeDatas, path) => {
+      let authorities;
+      routeDatas.forEach(route => {
+        // check partial route
+        if (pathToRegexp(`${route.path}(.*)`).test(path)) {
+          if (route.authority) {
+            authorities = route.authority;
+          }
+          // is exact route?
+          if (!pathToRegexp(route.path).test(path) && route.routes) {
+            authorities = getAuthority(route.routes, path);
+          }
         }
-      }
-    }
+      });
+      return authorities;
+    };
 
-    return authorities;
+    return getAuthority(routes, pathname);
   };
 
   getPageTitle = (pathname, breadcrumbNameMap) => {