ant-design / pro-components

🏆 Use Ant Design like a Pro!
https://pro-components.antdigital.dev
MIT License
4.22k stars 1.35k forks source link

🐛[BUG]ProLayout会出现undefined is not iterable (cannot read property Symbol(Symbol.iterator)) #7773

Open habitualloafer opened 11 months ago

habitualloafer commented 11 months ago

🐛 bug 描述

ProLayout会出现undefined is not iterable (cannot read property Symbol(Symbol.iterator))

📷 复现步骤

hash路由模式下,直接更改路由地址复现

💻 复现代码

import { PageContainer, ProLayout } from "@ant-design/pro-components"; import { Space } from "antd"; import { FC, } from "react"; import { Outlet, } from "react-router-dom"; import { DownloadOutlined, UserOutlined } from "@ant-design/icons"; import logo from "@assets/logo.png"; import { useLocation,useMatches } from "react-router-dom"; import { getMenuData } from "@router/index";

const Layout: FC = () => { const menuData=getMenuData(); const location=useLocation(); const matches=useMatches(); const breadcrumb=matches.filter(({handle}:any)=>!!handle?.breadcrumb).map(({handle,pathname}:any)=>({path:"/#"+pathname,title:handle.breadcrumb}));

return (

<ProLayout
  layout="mix"
  logo={logo}
  menuDataRender={()=>(menuData)}
  breadcrumbRender={()=>breadcrumb}
  location={location}
  menu={{
    defaultOpenAll:true
  }}
  headerContentRender={() => (
    <div style={{ display: "flex", justifyContent: "end" }}>
      <Space size="middle">
        <DownloadOutlined />
        <Space>
          <UserOutlined />
          超级管理员
        </Space>
      </Space>
    </div>
  )}
>
  <PageContainer header={{
    title:breadcrumb[breadcrumb.length-1]?.title
  }}>
    <Outlet />
  </PageContainer>
</ProLayout>

); };

export default Layout;

© 版本信息

🚑 其他信息

image

110635164 commented 10 months ago

我也出现了,如果是是从一个目录跳到另外一个目录里面的菜单,就会必现,但是同一个目录里面的菜单来回却换却没事

Yzzzed commented 8 months ago

试试这个 outlet外层使用Suspense https://github.com/ant-design/pro-components/issues/6264