react - 根據路由生成菜單

后端返回菜單的格式
menuList:[{index: true,name: "",component: "../views/Home",meta: { title: "首頁", requiresAuth: true,roles:['user']},},{path: "/admin",name: "admin",meta: { title: "管理頁", roles: ["admin"] },children: [{path: "/admin/user",name: "User",component: "@/pages/Admin/User",meta: { title: "用戶管理" },children: [{path: "/admin/user",name: "User",component: "@/pages/Admin/User",meta: { title: "用戶管理1" },},],},],},],

遞歸轉換 menuList 為 Ant Design Menu 的 items 格式

const convertMenuListToItems = (menuList: any[]): MenuItem[] => {return menuList.map((menu) => {const item: any = {key: menu.path || menu.name, // 使用 path 或 name 作為 keylabel: menu.meta?.title || menu.name, // 顯示標題};// 如果有子菜單,遞歸處理if (menu.children) {item.children = convertMenuListToItems(menu.children);}// 如果是 index 路由,可以標記特殊 key(可選)if (menu.index) {item.key = 'home'; // 強制指定 key,避免重復}return item;});
};const Menu1: React.FC = () => {const { menuList } = useBoundStore()
const items =convertMenuListToItems(menuList)const [current, setCurrent] = useState('mail');const onClick: MenuProps['onClick'] = (e) => {console.log('click ', e);setCurrent(e.key);};return <Menu onClick={onClick} selectedKeys={[current]} mode="horizontal" items={items} style={{display:'flex',justifyContent:'center',alignItems:'center'}}/>;
};export default Menu1;

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/89769.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/89769.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/89769.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Window延遲更新10000天配置方案

1.點擊"開始"菜單&#xff0c;搜索"注冊表編輯器"&#xff0c;點擊"打開"。2.找到"\HKEY LOCAL MACHINE\SOFTWARE\Microsoft\WindowsUpdate\Ux\Settings"路徑。3.右面空白處右鍵新建一個32位值&#xff0c;命名為FlightSettingsMaxPau…

【OD機試】人民幣轉換

題目描述 將阿拉伯數字金額轉換為中文大寫金額格式,需遵循以下規則: 1、 前綴要求:中文大寫金額前必須標明“人民幣”字樣。 2、 用字規范:使用壹、貳、叁、肆、伍、陸、柒、捌、玖、拾、佰、仟、萬、億、元、角、分、零、整等字樣。 3、 “整”字規則: 金額到“元”為止…

在ajax中什么時候需要將返回值類型做轉換

$.ajax({url: TMSPROC0050/deleteData?accidentIds accidentIds.join(,),type: DELETE,dataType: json,success: function(result) {$(#accidentGrid).datagrid(reload);$.messager.show({title: 成功,msg: result.message})},error: function(result) {$.messager.alert({ti…

Helm常用命令大全(2025最新版)

文章目錄Helm常用命令大全&#xff08;2025最新版&#xff09;一、基礎命令與環境配置版本與幫助信息安裝與升級HelmLinux系統安裝版本升級注意事項二、倉庫管理命令倉庫基礎操作OCI倉庫支持&#xff08;v3.8新特性&#xff09;三、Chart操作命令Chart創建與打包Chart搜索與下載…

gitlab+jenkins

文章目錄架構gitlab和jenkins安裝jenkins配置gitlab配置jenkins與gitlab聯動參考架構 gitlab和jenkins安裝 部署docker 部署jenkins 啟動jenkins 用戶&#xff1a;admin&#xff0c;對應的密碼如下 點擊安裝自定義推薦的插件 安裝gitlab插件 jenkins配置 配置pipline…

Redis字符串操作指南:從入門到實戰應用

Redis作為一款高性能的鍵值存儲數據庫&#xff0c;其字符串&#xff08;String&#xff09;類型是最基礎也最常用的數據類型。它不僅能存儲簡單的文本信息&#xff0c;還能應對數字計算、二進制數據等多種場景&#xff0c;靈活且高效。接下來&#xff0c;我們就全方位剖析Redis…

SQLite 數據庫字段類型-詳細說明,數據類型詳細說明。

SQLite 數據類型 SQLite字段類型詳細說明&#xff0c;包含存儲類、親和類型、布爾類型、日期時間類型的存儲方式、取值范圍及核心特性。 創建 SQLite3 表時可使用的各種數據類型名稱&#xff0c;同時也介紹了相應的親和類型。 一、核心存儲類&#xff08;Storage Classes&am…

Node.js特訓專欄-實戰進階:17.會話管理與安全存儲

?? 歡迎來到 Node.js 實戰專欄!在這里,每一行代碼都是解鎖高性能應用的鑰匙,讓我們一起開啟 Node.js 的奇妙開發之旅! Node.js 特訓專欄主頁 專欄內容規劃詳情 會話管理與安全存儲:從原理到實戰的Web安全實踐 在Web應用中,會話(Session)是維持用戶狀態的核心機制—…

【橘子分布式】gRPC(編程篇-中)

一、簡介 我們之前已經完成了對于api模塊的開發&#xff0c;也就是已經生成了基礎的類和對應的接口&#xff0c;現在我們需要完成的是client和server端的開發。其實如同thrift一樣&#xff0c;現在要做的就是實現我們之前定義的service里面的hello方法&#xff0c;里面寫我們的…

Spring Boot 項目中數據同步之binlog和MQ

在 Spring Boot 項目中&#xff0c;“監聽 binlog” 和 “業務代碼中集成 MQ” 是實現數據同步、事件驅動的兩種主流方法。 簡單來說&#xff0c;這個選擇可以概括為&#xff1a; 監聽 Binlog (如使用 Canal)&#xff1a;像一個數據庫的貼身秘書&#xff0c;它忠實地記錄數據庫…

MySQL 寫入性能優化全攻略(附 GitHub 面試題項目鏈接)

面試中你可能會遇到這樣的問題&#xff1a; &#x1f4ac; “假設你的接口一天收到百萬級請求&#xff0c;MySQL 撐得住嗎&#xff1f;你會怎么優化寫入性能&#xff1f;” 剛開始我也懵過&#xff0c;后來不斷復盤與總結&#xff0c;現在我可以用結構化方式給出一個相對完整的…

用Dynamic chunk去干掉tokenizer?

一般你們下AR模型的時候&#xff0c;都有這個&#xff0c;也就是tokenzier&#xff0c;tokenizer是干啥的&#xff0c;其實就是你的分詞字典不光有specal的token對應的還有實際的對應的分詞對應的代碼&#xff0c;比如&#xff1a;也有tokenzier沒顯示的&#xff0c;比如&#…

Linux系統日志管理入門:journalctl命令完全指南

Linux系統日志管理入門&#xff1a;journalctl命令完全指南前言一、journalctl介紹二、基礎使用&#xff1a;快速上手1. 查看全部日志2. 查看本次啟動的日志3. 按時間篩選日志4. 按服務&#xff08;單元&#xff09;過濾日志三、常用參數與場景四、實戰案例&#xff1a;解決實際…

神經網絡的基本骨架——nn.Module的使用(torch.nn庫)

在 PyTorch 中&#xff0c;nn.Module 是所有神經網絡模塊的基類&#xff0c;用于構建和組織深度學習模型。它提供了一系列工具和功能&#xff0c;使模型的定義、訓練和部署更加高效和靈活。nn Neural Network&#xff08;神經網絡&#xff09;核心作用&#xff1a;模塊化設計&…

靜態住宅IP和節點有什么區別?哪種更適合你的需求?

在跨境電商、社媒運營等業務中&#xff0c;“靜態住宅IP”和“節點”常被混淆使用&#xff0c;但兩者代表網絡架構中不同層級的資源。選錯可能導致賬號風控、業務效率低下。IPdodo將在本篇文章中&#xff0c;從本質、業務場景到選擇策略&#xff0c;為您一文道清兩者之間的區別…

AI編程工具對比:Cursor、GitHub Copilot與Claude Code

文章目錄AI編程工具對比&#xff1a;Cursor、GitHub Copilot與Claude Code一、產品定位與核心架構1.1 Cursor&#xff1a;AI原生IDE的代表1.2 GitHub Copilot&#xff1a;代碼補全的行業標桿1.3 Claude Code&#xff1a;終端Agent的革新者二、核心功能深度對比2.1 代碼生成與理…

車載傳統ECU---MCU軟件架構設計指南

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 做到欲望極簡,了解自己的真實欲望,不受外在潮流的影響,不盲從,不跟風。把自己的精力全部用在自己。一是去掉多余,凡事找規律,基礎是誠信;二是…

SCSAI工業智能體的核心特征

一個覆蓋工業全場景、由多個垂直領域智能體構成的開放生態平臺。每個智能體都是具備獨立能力的 “數字單元”&#xff0c;同時又能通過平臺實現互聯、協作與進化。一、工業智能體平臺的核心定位本質&#xff1a;工業領域的 “智能體操作系統 應用市場”&#xff0c;為各類工業…

Java大視界:Java大數據在智能醫療電子健康檔案數據挖掘與健康服務創新>

> 本文通過完整代碼示例,揭秘如何用Java大數據技術挖掘電子健康檔案價值,實現疾病預測、個性化健康管理等創新服務。 ### 一、智能醫療時代的數據金礦 電子健康檔案(EHR)作為醫療數字化的核心載體,包含海量患者全生命周期健康數據。據統計,全球醫療數據量正以每年…

家庭KTV v1.1.9 | 曲庫豐富,無限制免費K歌

家庭KTV是一款專門為家庭娛樂設計的K歌軟件&#xff0c;旨在讓用戶在家中也能享受到與KTV相同的高質量K歌體驗。該應用擁有豐富的歌曲庫&#xff0c;包括經典老歌和當下流行熱曲等多種類型&#xff0c;滿足不同年齡段用戶的需求。家庭KTV支持多種點歌方式&#xff0c;如按照歌手…