From c10c16b5a818740acfc21899eee524ca2fa5bc9f Mon Sep 17 00:00:00 2001 From: zhangjw05 Date: Fri, 19 Nov 2021 11:11:47 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=A0=B9=E8=B7=AF?= =?UTF-8?q?=E5=BE=84=E9=87=8D=E5=AE=9A=E5=90=91=E4=B8=80=E7=9B=B4=E8=B7=B3?= =?UTF-8?q?=E8=BD=AC=E7=AC=AC=E4=B8=80=E4=B8=AA=E5=8F=B6=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/pro-layout/src/layouts/BasicLayout.tsx | 17 +++++++++++------ packages/pro-layout/src/utils.ts | 1 + 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/packages/pro-layout/src/layouts/BasicLayout.tsx b/packages/pro-layout/src/layouts/BasicLayout.tsx index 79f9cd3..d4113d7 100644 --- a/packages/pro-layout/src/layouts/BasicLayout.tsx +++ b/packages/pro-layout/src/layouts/BasicLayout.tsx @@ -88,7 +88,7 @@ function BasicLayout({ }, { siderRender: true, headerRender: true, footerRender: true }, ); - const displayRoutes = useMemo(() => { + const menuRoutes = useMemo(() => { const filterNode = (nodes: RouteConfig[]): RouteConfig[] => { return nodes .map((m) => ({ ...m })) @@ -129,16 +129,21 @@ function BasicLayout({ }); }; const newRoutes = wrapNode(routes); - const firstLeafNode = getFirstLeafNode(displayRoutes); const redirectNode = newRoutes.find((m) => m.path === '/' && m.redirect); - if (firstLeafNode && redirectNode && redirectNode.redirect !== firstLeafNode.path) { - redirectNode.redirect = firstLeafNode.path; + if (redirectNode) { + const targetRoute = getRouteConfigByPath(menuRoutes, redirectNode.redirect!); + const firstLeafNode = getFirstLeafNode(menuRoutes); + + // 如果重定向页面无权限访问且第一个叶节点存在,则修改为跳转到第一个叶节点 + if (!targetRoute && firstLeafNode) { + redirectNode.redirect = firstLeafNode.path; + } } return newRoutes; // eslint-disable-next-line react-hooks/exhaustive-deps - }, [authInfo, displayRoutes, routes]); + }, [authInfo, menuRoutes, routes]); const getSider = () => { const menu = pathname !== '/' && ( ({ } }} > - {renderMenu(displayRoutes)} + {renderMenu(menuRoutes)} ); return siderRender ? siderRender(menu) : {menu}; diff --git a/packages/pro-layout/src/utils.ts b/packages/pro-layout/src/utils.ts index 25f2b19..8924958 100644 --- a/packages/pro-layout/src/utils.ts +++ b/packages/pro-layout/src/utils.ts @@ -43,6 +43,7 @@ export function getRouteConfigByPath(routes: RouteConfig[], path: string): Route export function getFirstLeafNode(routes: RouteConfig[]): RouteConfig | undefined { const firstNode = routes[0]; + // 不存在节点时,则返回 undefined if (!firstNode) { return firstNode; } From c71217a5c4d2726ab8cce20756caa36f5d7c9cdb Mon Sep 17 00:00:00 2001 From: zhangjw05 Date: Fri, 19 Nov 2021 11:12:19 +0800 Subject: [PATCH 2/2] chore: publish --- packages/pro-layout/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pro-layout/package.json b/packages/pro-layout/package.json index 55f5ebe..2d2dcaf 100644 --- a/packages/pro-layout/package.json +++ b/packages/pro-layout/package.json @@ -1,6 +1,6 @@ { "name": "@epeejs/pro-layout", - "version": "1.0.0", + "version": "1.0.1", "description": "用于快速搭建中后台页面结构", "main": "es/index.js", "module": "es/index.js",