【发布时间】:2020-06-30 16:15:51
【问题描述】:
我有以下 Javascript 代码
class Navbar extends React.Component {
constructor(props) {
super(props);
this.state = {isVisible: false};
}
render() {
console.log('hi')
return(
<div className = 'navbar'>
<div className = 'nav-button'
onClick = {() => this.setState({isVisible: !this.state.isVisible})}>
</div>
<div className = 'navbar-content row'>
<div className="navbar-item col s1 offset-s6"><h5 className="center-align">Home</h5></div>
<div className="navbar-item col s1"><h5 className="center-align">About</h5></div>
<div className="navbar-item col s1"><h5 className="center-align">Home</h5></div>
<div className="navbar-item col s1"><h5 className="center-align">About</h5></div>
</div>
</div>
);
}
}
当我单击“导航按钮”时,我应该调用 setState 来更改 isVisible 组件,因此该组件应该重新渲染并且我应该期望控制台记录“hi”。然而,这并没有发生。我想知道为什么组件没有重新渲染。
但是,当我删除导航栏正下方的 div 标签时,组件会成功重新渲染。
class Navbar extends React.Component {
constructor(props) {
super(props);
this.state = {isVisible: false};
}
render() {
console.log('hi')
return(
<div className = 'navbar'>
<div className = 'nav-button'
onClick = {() => this.setState({isVisible: !this.state.isVisible})}>
</div>
</div>
);
}
}
【问题讨论】:
-
this.isVisible是undefined。应该是this.state.isVisible。 -
道歉 - 感谢您指出这一点。不幸的是,我遇到了同样的问题。
标签: javascript reactjs render setstate