【发布时间】:2019-07-06 05:02:02
【问题描述】:
我想在单击按钮时将 100% 的宽度应用于我的导航栏。最初,它将是 0%(隐藏)。 为此,我使用一个状态来跟踪导航栏的宽度,但是,我的状态似乎不会在点击时改变。
class Navbar extends Component {
constructor(){
super();
this.state = {
sidenav: {
width: '0%',
}
}
}
showNavBar = () => {
this.setState({
sidenav: {
width: '100%',
}
})
}
render(){
return(
<div>
<div className ="sidenav" style ={{width : this.state.sidenav.width}}>
<NavLink exact to="/">Home</NavLink>
<NavLink exact to="/about">About</NavLink>
<NavLink exact to="/portfolio">Portfolio</NavLink>
<NavLink exact to="/contacts">Contacts</NavLink>
<div className="content">
<Route exact path="/" component={Home} />
<Route exact path="/about" component={About} />
<Route exact path="/portfolio" component={Portfolio} />
<Route exact path="/contacts" component={Contacts} />
</div>
</div>
<NavbarButton onClick={this.showNavBar}/>
</div>
)
}
};
谁能指出我哪里出错了?
编辑:
所以我按照你们发布的示例进行操作,并且只有当我在渲染函数中明确给出时才使其工作。
所以这是我的 NavBarbutton 代码,也许有人能看出它为什么错了?
const NavbarButton = (props) => {
return (
<button style = {style} onClick = {props.showNavBar}>☰</button>
)
}
【问题讨论】:
-
你有没有看到这个问题:stackoverflow.com/q/37827279/4636715
-
您的状态没有改变或样式没有更新?在
render()函数中执行console.log(this.state)以查看点击后统计信息是否正在更新。 -
您的
css有问题。代码工作正常。检查这个我快速创建的代码框示例codesandbox.io/s/o7p3xw8jz
标签: javascript reactjs