左侧菜单点击后跳转到新页面

115 阅读1分钟

1. 问题描述

最近,遇到一个问题,左侧菜单全部是 cmdb 域下面的,现在需要增加一个菜单项,点击后需要新开一个页面,并且是另一个域(cidataquality)下面的;并且当前页面的路由地址不希望发生变化

2. 具体做法

  1. 在 menus 里面增加 onClick 事件,并且使用 window.open 打开指定路由,并且禁止默认点击事件。
let menus = [
  {
    key: 'compchecks',
    type: 'link',
    name: 'xxx',
    icon: <Plus />,
    path: '/cidataquality',
    onClick: (e) => {
      e.preventDefault()
      e.stopPropgation()
      window.open('/cidataquality', '_blank')
    }
  }
]

<Menus items={menus} />
  1. 但是禁止默认点击事件行为并没有效果,当前页面地址还是会发生改变。此时,还可以使用另外一种思路:页面路由地址已经改变是既定事实,但是可以使用路由回退解决这一问题。
onClick: (e) => {
  window.open('/cidataquality', '_blank')
  window.history.go(-1)
}