Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript reactjs侧菜单功能_Javascript_Reactjs_State_Sidebar - Fatal编程技术网

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}:{};
返回(
); }
请在代码中包含您提到的其他组件,以便我们可以测试并为您找到解决方案。请在代码中包含您提到的其他组件,以便我们可以测试并为您找到解决方案。