Javascript reactjs侧菜单功能
我有一个侧边栏,固定有图标,可以导航到不同的页面。单击图标时,会滑出一个辅助菜单。当前,当单击图标时,菜单会滑出,但当选择另一个图标时,菜单会滑回,而不仅仅是切换或退出。同时,从侧边栏和菜单中单击也不会关闭滑动菜单。我不知道如何让它工作。如有任何建议,将不胜感激 家长:Javascript reactjs侧菜单功能,javascript,reactjs,state,sidebar,Javascript,Reactjs,State,Sidebar,我有一个侧边栏,固定有图标,可以导航到不同的页面。单击图标时,会滑出一个辅助菜单。当前,当单击图标时,菜单会滑出,但当选择另一个图标时,菜单会滑回,而不仅仅是切换或退出。同时,从侧边栏和菜单中单击也不会关闭滑动菜单。我不知道如何让它工作。如有任何建议,将不胜感激 家长: 导出默认类父扩展组件{ 构造函数(){ 超级(); 此.state={ 美诺朋:错, }; } 切换菜单打开=()=>{ this.setState({menuOpen:!this.state.menuOpen}); } ren
导出默认类父扩展组件{
构造函数(){
超级();
此.state={
美诺朋:错,
};
}
切换菜单打开=()=>{
this.setState({menuOpen:!this.state.menuOpen});
}
render(){
返回(
);
}
}
创建openMenu
和closeMenu
处理程序,而不是使用单个切换菜单打开
处理程序
openMenu = () => {
this.setState(prevState => {
if (!prevState.menuOpen) {
return { menuOpen: true };
}
return {};
})
}
closeMenu = () => {
this.setState(prevState => {
if (prevState.menuOpen) {
return { menuOpen: false };
}
return {};
})
}
然后,您可以使用openMenu
作为顶级导航li
项目的onClick
处理程序
如果您有权访问父组件中的主要内容,您还可以在外部处理关闭单击(如果没有,您需要将菜单打开状态提升到您可以访问的位置)。使用closeMenu
作为“外部”内容上的单击处理程序-滑动菜单中没有的内容。您需要确保仅在菜单打开时设置该处理程序。有很多方法可以做到这一点,但这是其中之一:
render() {
const handleCloseWhenOpen = this.state.menuOpen ? { onClick: this.closeMenu } : {};
return (
<div>
<ul>
<NavIcons onClick={this.toggleMenuOpen} />
<PushMenu menuOpen={this.state.menuOpen} />
</ul>
<MainContent {...handleCloseWhenOpen} />
</div>
);
}
render(){
const handleCloseWhenOpen=this.state.menuOpen?{onClick:this.closeMenu}:{};
返回(
);
}
创建openMenu
和closeMenu
处理程序,而不是使用单个切换菜单打开
处理程序
openMenu = () => {
this.setState(prevState => {
if (!prevState.menuOpen) {
return { menuOpen: true };
}
return {};
})
}
closeMenu = () => {
this.setState(prevState => {
if (prevState.menuOpen) {
return { menuOpen: false };
}
return {};
})
}
然后,您可以使用openMenu
作为顶级导航li
项目的onClick
处理程序
如果您有权访问父组件中的主要内容,您还可以在外部处理关闭单击(如果没有,您需要将菜单打开状态提升到您可以访问的位置)。使用closeMenu
作为“外部”内容上的单击处理程序-滑动菜单中没有的内容。您需要确保仅在菜单打开时设置该处理程序。有很多方法可以做到这一点,但这是其中之一:
render() {
const handleCloseWhenOpen = this.state.menuOpen ? { onClick: this.closeMenu } : {};
return (
<div>
<ul>
<NavIcons onClick={this.toggleMenuOpen} />
<PushMenu menuOpen={this.state.menuOpen} />
</ul>
<MainContent {...handleCloseWhenOpen} />
</div>
);
}
render(){
const handleCloseWhenOpen=this.state.menuOpen?{onClick:this.closeMenu}:{};
返回(
);
}
请在代码中包含您提到的其他组件,以便我们可以测试并为您找到解决方案。请在代码中包含您提到的其他组件,以便我们可以测试并为您找到解决方案。