ant-design / ant-design-pro

👨🏻‍💻👩🏻‍💻 Use Ant Design like a Pro!
https://pro.ant.design
MIT License
36.12k stars 8.12k forks source link

🧐[问题 | question]设置layout配置中的target:'_self'之后菜单跳转依旧是在新标签页打开 #10868

Closed HeLiYu0 closed 6 months ago

HeLiYu0 commented 11 months ago

🧐 问题描述 | Problem description

我在app.tsx中从服务端获取的菜单数据,path为url链接。在defaultSettings.ts文件中配置的target:'self'但是点击菜单跳转仍然是在新标签页打开

💻 示例代码 | Sample code

menu: { // 每当 initialState?.currentUser?.userid 发生修改时重新执行 request params: { // userId: initialState }, request: async (params: void, defaultMenuData: any) => { const menus = await getMenuList().then((res: any) => { return res.data[1].children.map((item: any) => { return { path: '/', name: item.title, icon: React.createElement(allIcons['SettingOutlined']), key: item.id, routes: item.children.map((element: any) => { return { path: 'https://umijs.org/docs/api/runtime-config#layout', // name:element.title, key: element.id, }; }), }; }); }); // initialState.currentUser 中包含了所有用户信息 return menus; }, },

🚑 其他信息 | Other information

antdPro版本:V6,umi版本:4

OS:

Node:

浏览器 | browser:

chenshuai2144 commented 6 months ago

根据您提供的代码片段,我注意到您正在加载菜单数据并将其用作导航链接。您提到在设置defaultSettings.ts中的target:'self'后,菜单仍然在新标签页中打开。

根据您的描述,我假设您正在使用Ant Design Pro V6和umi V4。在Ant Design Pro V6中,默认情况下,菜单链接是在新标签页中打开的,而不受defaultSettings.ts中的配置影响。

要在当前标签页中打开菜单链接,您需要进行以下更改:

  1. 打开config.ts文件。
  2. menu配置中的每个菜单项中添加target:'_self'属性。

示例代码如下:

export default [
  {
    path: '/',
    name: '菜单1',
    icon: 'icon1',
    target: '_self', // 添加target属性
  },
  {
    path: '/menu2',
    name: '菜单2',
    icon: 'icon2',
    target: '_self', // 添加target属性
  },
  // 其他菜单项...
];

通过将target设置为'_self',您将告诉浏览器在当前标签页中打开链接。

请注意,这种更改将应用于所有菜单项。如果只想更改特定菜单项的行为,请在相应的菜单项中进行更改。

希望这能帮助解决您的问题!如果您有任何其他疑问,请随时问我。