diff --git a/src/layouts/BasicLayout.js b/src/layouts/BasicLayout.js index 89a706a153a6dae6b5c6fcdb1b18a6a6e695a221..c992fb2bd7557042c6c8d50c11328954ade3b17f 100644 --- a/src/layouts/BasicLayout.js +++ b/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) => {