antd的导航li当前活动项(高亮),为什么刷新就不正常显示了?

我使用antd的导航栏,并且用了react-router的<Link>做路由跳转,点击的li高亮,正常显示,但刷新后,li就不高亮显示了。

    <Menu.Item key="1"><Link to='/1'>1111</Link></Menu.Item>
    <Menu.Item key="2"><Link to='/2'>222</Link></Menu.Item>
    <Menu.Item key="3"><Link to='/3'>333</Link></Menu.Item>
    <Menu.Item key="4"><Link to='/4'>4444</Link></Menu.Item>
    <Menu.Item key="5"><Link to='/5'>5555</Link></Menu.Item>

看代码发现aria-selected属性变成false了
刷新前:
图片描述

刷新后:
图片描述

请问该如何解决啊?

阅读 7.6k
2 个回答

截取当前url,设置selectedKeys

通过state来控制显示当前selectedKeys

1.设置state

this.state = {
      currentUrl : '/userInfo'
}

2.在componentDidMount的时候使用location.pathname截取到url,设置state

componentDidMount(){
    let url = location.pathname,
          current = url.split('/admin')[1];
    //console.log(current);
    this.setState({
      currentUrl: current
    });
  }

3.MenuonSelect 函数也可以获取到当前的key

 <Menu theme="dark"
       mode="inline"
       selectedKeys={[this.state.currentUrl]}
       onSelect={this.handleSelectKey}
 >
       <Menu.Item key="/userInfo">
         <Link className="nav-text" to="/userInfo">
            <Icon type="user"/>
            用户信息
         </Link>
       </Menu.Item>
</Menu>
handleSelectKey(item,key,selectedKeys){
    //console.log(item.key);
    this.setState({
      currentUrl: item.key
    });
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进