如何关闭更改路线的导航菜单
问题描述:
使用react-router-dom
时,如何检测用户何时导航到新页面?如何关闭更改路线的导航菜单
我目前使用的是"react-router-dom": "^4.2.2"
和"react": "^15.6.1"
。我想在用户选择新的目标网址时关闭手机导航菜单,但我无法检测路由何时发生变化。
是否有回拨我可以挂钩为react-router-dom
?我想能够沿着location.onChange(() => { this.state.collapsed = true; })
行我当前的代码是调用代码如下:
组件:
class Leftnav extends Component {
constructor() {
super();
this.state = {
collapsed: true,
};
}
toggleMenu =() => {
this.setState({
collapsed: !this.state.collapsed,
})
};
render() { ... { */html here/* } ... };
};
模板:
<ul className={"leftnav-collapse " + (this.state.collapsed ? 'collapsed' : '')}>
<li><NavLink to={`/events`} activeClassName="current">Events</NavLink></li>
<li><NavLink to={`/people`} activeClassName="current">People</NavLink></li>
</ul>
截图:
答
<NavLink to={`/events`}
activeClassName="current"
onClick={this.toggleMenu}
>Events</NavLink>
您可能还需要更新toggleMenu
功能,防止默认点击动作,现在一个单击处理应用。
toggleMenu = (e) => {
if (e) {
e.preventDefault();
}
this.setState({collapsed: !this.state.collapsed});
}
谢谢gravityplanx。我如何调整您的示例以适应以下情况? a)如果点击我当前页面的链接,则不会发生URL更改,因此我希望菜单保持打开状态并b。)如果单击页面上其他位置的链接,我的URL会更改,所以我希望导航菜单关闭。 –
a)使用react-router的['activeStyle']组合(https://github.com/ReactTraining/react-router/blob/master/packages/react-router-dom/docs/api/NavLink.md# activestyle-object)属性以及css属性['pointer-events'](https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events) – gravityplanx