[antd,umijs]如何修改其他页面Menu组件的selectedKeys实现背景高亮

Menu组件是放在layout页面中,
然后通过umi的配置式路由包含其他pages组件,
现在直接在页面上点击Menu的任一Item可以跳转并背景高亮,
但是其他的组件页面中有Link链接的话,我想点击后也能使对应的Menu.Item背景高亮,
antd中有提供selectedKeys这个API可以修改,我尝试着在layout中判定window.location.pathname并与routes数组中url做比对,然后找出index去更新selectedKeys,写在componentDidMount里有点问题,layout页面组件只会加载一次,
现在有两个解决方向,一个是找出页面跳转时layout能够每次触发的生命周期,一个是想办法把layout的props传给{this.props.children}组件,然后通过状态提升修改selectedKeys,
不知道是否可以这样还是有更好的方式?
所以子组件跳转时应该如何修改layout页面的Menu的selectedKeys呢?


暂时已实现,解决思路是在layout页render的时候去获取key键绑定到selectedKeys,
这样每次跳转页面时都可以更新selectedKeys的值了,但是需要维护一个routes数组,映射出url和key的关系。

阅读 3.1k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题