@@ -88,7 +88,7 @@ function BasicLayout<AuthorityType = any>({
8888 } ,
8989 { siderRender : true , headerRender : true , footerRender : true } ,
9090 ) ;
91- const displayRoutes = useMemo ( ( ) => {
91+ const menuRoutes = useMemo ( ( ) => {
9292 const filterNode = ( nodes : RouteConfig [ ] ) : RouteConfig [ ] => {
9393 return nodes
9494 . map ( ( m ) => ( { ...m } ) )
@@ -129,16 +129,21 @@ function BasicLayout<AuthorityType = any>({
129129 } ) ;
130130 } ;
131131 const newRoutes = wrapNode ( routes ) ;
132- const firstLeafNode = getFirstLeafNode ( displayRoutes ) ;
133132 const redirectNode = newRoutes . find ( ( m ) => m . path === '/' && m . redirect ) ;
134133
135- if ( firstLeafNode && redirectNode && redirectNode . redirect !== firstLeafNode . path ) {
136- redirectNode . redirect = firstLeafNode . path ;
134+ if ( redirectNode ) {
135+ const targetRoute = getRouteConfigByPath ( menuRoutes , redirectNode . redirect ! ) ;
136+ const firstLeafNode = getFirstLeafNode ( menuRoutes ) ;
137+
138+ // 如果重定向页面无权限访问且第一个叶节点存在,则修改为跳转到第一个叶节点
139+ if ( ! targetRoute && firstLeafNode ) {
140+ redirectNode . redirect = firstLeafNode . path ;
141+ }
137142 }
138143
139144 return newRoutes ;
140145 // eslint-disable-next-line react-hooks/exhaustive-deps
141- } , [ authInfo , displayRoutes , routes ] ) ;
146+ } , [ authInfo , menuRoutes , routes ] ) ;
142147 const getSider = ( ) => {
143148 const menu = pathname !== '/' && (
144149 < Menu
@@ -156,7 +161,7 @@ function BasicLayout<AuthorityType = any>({
156161 }
157162 } }
158163 >
159- { renderMenu ( displayRoutes ) }
164+ { renderMenu ( menuRoutes ) }
160165 </ Menu >
161166 ) ;
162167 return siderRender ? siderRender ( menu ) : < Sider > { menu } </ Sider > ;
0 commit comments