setSelected(select)}
- selectedKey={selected.currentKey}
+ selectedKey={selected.key}
identity={urlParams.identity}
/>
diff --git a/src/pages/ideContainer/navBar.tsx b/src/pages/ideContainer/navBar.tsx
index 3c309c2..93bd615 100644
--- a/src/pages/ideContainer/navBar.tsx
+++ b/src/pages/ideContainer/navBar.tsx
@@ -1,11 +1,12 @@
import React, { useState, useEffect } from 'react';
import { Tabs } from '@arco-design/web-react';
import styles from './style/navbar.module.less';
+import { Selected } from '@/pages/ideContainer/types';
const TabPane = Tabs.TabPane;
interface NavBarProps {
- selected?: { currentPath?: string; currentKey?: string; };
+ selected?: Selected;
menuData?: any[];
onTabChange?: (path: string) => void;
onTabClose?: (path: string) => void;
@@ -16,15 +17,15 @@ const NavBar: React.FC = ({ selected, menuData, onTabChange, onTabC
const [activeTab, setActiveTab] = useState('');
// 根据菜单数据和路径查找菜单标题
- const findMenuTitle = (menu: any[], path?: string): string => {
+ const findMenuTitle = (originData: Selected, menu: any[], path?: string): string => {
if (!path) return '未知页面';
for (const item of menu) {
- if (item.path === path) {
+ if (item.path === path && item.title === originData.title) {
return item.title;
}
if (item.children) {
- const title = findMenuTitle(item.children, path);
+ const title = findMenuTitle(originData, item.children, path);
if (title && title !== '未知页面') {
return title;
}
@@ -37,14 +38,15 @@ const NavBar: React.FC = ({ selected, menuData, onTabChange, onTabC
// 当选中的菜单项变化时,添加新的tab
useEffect(() => {
- if (selected?.currentPath) {
- const path = selected.currentPath;
+ if (selected?.path) {
+ const path = selected.path;
+ const title = selected.title;
// 检查tab是否已存在
- const existingTab = tabs.find(tab => tab.path === path);
+ const existingTab = tabs.find(tab => tab.path === path && tab.title === title);
if (!existingTab) {
// 创建新tab
- const title = menuData ? findMenuTitle(menuData, path) : path;
+ const title = menuData ? findMenuTitle(selected, menuData, path) : path;
const newTab = {
key: path,
title: title,
diff --git a/src/pages/ideContainer/sideBar.tsx b/src/pages/ideContainer/sideBar.tsx
index 07c6bc8..7949b1c 100644
--- a/src/pages/ideContainer/sideBar.tsx
+++ b/src/pages/ideContainer/sideBar.tsx
@@ -3,6 +3,7 @@ import styles from './style/sideBar.module.less';
import { IconApps } from '@arco-design/web-react/icon';
import { menuData, menuData2 } from './config/menuData';
import { ResizeBox, Tree } from '@arco-design/web-react';
+import { Selected } from '@/pages/ideContainer/types';
const TreeNode = Tree.Node;
@@ -15,7 +16,7 @@ interface MenuItemType {
}
interface SideBarProps {
- onMenuSelect?: ({ currentPath, currentKey }) => void;
+ onMenuSelect?: (selected: Selected) => void;
selectedKey?: string;
identity?: string;
}
@@ -67,7 +68,7 @@ const SideBar: React.FC = ({ onMenuSelect, selectedKey, identity }
const mainMenuKey = `${item.key}`;
setMainMenuSelectedKey(mainMenuKey);
// 调用外部传入的菜单选择处理函数
- onMenuSelect?.({ currentPath: item.path, currentKey: `${item.key}` });
+ onMenuSelect?.({ ...item });
};
// 渲染子菜单
@@ -152,10 +153,7 @@ const SideBar: React.FC = ({ onMenuSelect, selectedKey, identity }
setMainMenuSelectedKey(mainMenuKey);
// 调用外部传入的菜单选择处理函数
- originalData.key && onMenuSelect?.({
- currentPath: originalData.path,
- currentKey: originalData.key
- });
+ originalData.key && onMenuSelect?.({ ...originalData } as Selected);
}}
>
{renderMenuItems(menu[activeKey]?.children)}
diff --git a/src/pages/ideContainer/types/index.ts b/src/pages/ideContainer/types/index.ts
new file mode 100644
index 0000000..cdc985a
--- /dev/null
+++ b/src/pages/ideContainer/types/index.ts
@@ -0,0 +1,7 @@
+export interface Selected {
+ title?: string;
+ path?: string;
+ key?: string;
+ parentKey?: string;
+ children?: Selected[];
+}
\ No newline at end of file