Browse Source

refactor: reduce code duplication of routerDataCache

KJlmfe 7 years ago
parent
commit
b425de859f
1 changed files with 9 additions and 8 deletions
  1. 9 8
      src/common/router.js

+ 9 - 8
src/common/router.js

@@ -6,6 +6,13 @@ import { getMenuData } from './menu';
 
 let routerDataCache;
 
+const getRouterDataCache = app => {
+  if (!routerDataCache) {
+    routerDataCache = getRouterData(app);
+  }
+  return routerDataCache;
+};
+
 const modelNotExisted = (app, model) =>
   // eslint-disable-next-line
   !app._models.some(({ namespace }) => {
@@ -26,27 +33,21 @@ const dynamicWrapper = (app, models, component) => {
   // transformed by babel-plugin-dynamic-import-node-sync
   if (component.toString().indexOf('.then(') < 0) {
     return props => {
-      if (!routerDataCache) {
-        routerDataCache = getRouterData(app);
-      }
       return createElement(component().default, {
         ...props,
-        routerData: routerDataCache,
+        routerData: getRouterDataCache(app),
       });
     };
   }
   // () => import('module')
   return Loadable({
     loader: () => {
-      if (!routerDataCache) {
-        routerDataCache = getRouterData(app);
-      }
       return component().then(raw => {
         const Component = raw.default || raw;
         return props =>
           createElement(Component, {
             ...props,
-            routerData: routerDataCache,
+            routerData: getRouterDataCache(app),
           });
       });
     },