微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

单击链接时,React 抽屉不会关闭

如何解决单击链接时,React 抽屉不会关闭

单击抽屉组件内的链接时,我的 React 侧抽屉不会关闭。我尝试过 componentDidUpdate 并尝试将 prop 传递给父类组件。两者都没有运气,但我一定是做错了什么......抽屉只有在点击抽屉外的背景(甚至不是工具栏,但这是另一个问题)时才会关闭

App.js

class App extends Component {
state = {
        sideDrawerOpen: false,open: false
 }
    
      drawerToggleClickHandler = () => {
        this.setState(prevstate => {
          return { sideDrawerOpen: !prevstate.sideDrawerOpen }
        })
      }
    
      backdropClickHandler = () => {
        this.setState({ sideDrawerOpen: false })
      }
render() {
let backdrop;
    if (this.state.sideDrawerOpen) {
      backdrop = <Backdrop click={this.backdropClickHandler} />
    }
let open; 
return (
          <>
           <div className='bod'>
          <Router>
          <Toolbar  drawerClickHandler={this.drawerToggleClickHandler} 
          open={open} 
          />
 <SideDrawer show={this.state.sideDrawerOpen}/>
        {backdrop}
<ProjectProvider>
            <Switch>
    <Route exact path="/" component={MainPage}/>
            <Route exact path='/main' component={MainPage} />
            
            <Route exact path='/contact' component={ContactPage} />
            <Route exact path='/portfolio' component={PortfolioPage} />
           
            <Route exact path ='/404' component={NotFoundPage} />
            <Redirect to='/404' />
            </Switch> 
            </ProjectProvider>
            <Footer/>
        </Router>
        </div>
        </>
    )}
}

export default App;

工具栏组件

const toolbar = props => (
     <nav className="toolbar navbar">
            <div className="toolbar_toggle-button">
                <DrawerToggleButton click={props.drawerClickHandler} />
            </div>
                <h2>Title</h2>
               <form id="navForm">
                    <Link id="red" to="/main" >ABOUT</Link> 
                    <Link id="green" to="/portfolio">PORTFOLIO</Link>
                    <Link id="blue" to="/contact">CONTACT</Link>
                </form>
        </nav>
)

export default toolbar;

SideDrawer 组件

const sideDrawer = props => {
  let drawerClasses = "side-drawer";
  if (props.show) {
    drawerClasses = "side-drawer open";
  }

  return (
    <nav className={drawerClasses} >
     <ul id="drawer_ul">
                    <li className="drawer_item">
                    <Link className="drawer_links" id="red" to="/main" >ABOUT</Link>   
                    </li>
                    <li className="drawer_item">
                    <Link className="drawer_links" id="green" to="/portfolio" >PORTFOLIO</Link>
                    </li>
                    <li className="drawer_item">
                    <Link className="drawer_links" id="blue" to="/contact" >CONTACT</Link>
                    </li>
                </ul>
    </nav>
  )
}

export default sideDrawer

解决方法

将我的“点击”道具添加到子组件解决了这个问题。

App.js

<SideDrawer click={this.drawerToggleClickHandler} />

SideDrawer 组件

<Link to="/main" onClick={props.click} />

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。