瀏覽代碼

fix: 修复动态路由子级长度为0时抛出异常 (#333)

SampsonYe(叶飞) 2 年之前
父節點
當前提交
3baffa11e4
共有 1 個文件被更改,包括 5 次插入3 次删除
  1. 5 3
      src/router/utils.ts

+ 5 - 3
src/router/utils.ts

@@ -230,16 +230,18 @@ function addAsyncRoutes(arrRoutes: Array<RouteRecordRaw>) {
     // 将backstage属性加入meta,标识此路由为后端返回路由
     v.meta.backstage = true;
     // 父级的redirect属性取值:如果子级存在且父级的redirect属性不存在,默认取第一个子级的path;如果子级存在且父级的redirect属性存在,取存在的redirect属性,会覆盖默认值
-    if (v?.children && !v.redirect) v.redirect = v.children[0].path;
+    if (v?.children && v.children.length && !v.redirect)
+      v.redirect = v.children[0].path;
     // 父级的name属性取值:如果子级存在且父级的name属性不存在,默认取第一个子级的name;如果子级存在且父级的name属性存在,取存在的name属性,会覆盖默认值
-    if (v?.children && !v.name) v.name = v.children[0].name;
+    if (v?.children && v.children.length && !v.name)
+      v.name = v.children[0].name;
     if (v.meta?.frameSrc) v.component = IFrame;
     // 对后端传component组件路径和不传做兼容(如果后端传component组件路径,那么path可以随便写,如果不传,component组件路径会跟path保持一致)
     const index = v?.component
       ? modulesRoutesKeys.findIndex(ev => ev.includes(v.component as any))
       : modulesRoutesKeys.findIndex(ev => ev.includes(v.path));
     v.component = modulesRoutes[modulesRoutesKeys[index]];
-    if (v.children) {
+    if (v?.children && v.children.length) {
       addAsyncRoutes(v.children);
     }
   });