javascript - 在有状态组件中切换布尔值
问题描述
我有一个相当简单的有状态组件,每当有人单击按钮时,我希望切换其值:
class Layout extends Component {
state = {
sidedrawer: false
}
sideDrawerCloseHandler = () => {
this.setState({sidedrawer: false})
}
sideDrawerTogglerHandler = () => {
this.setState({sidedrawer: !sidedrawer})
}
render () {
return (
<Aux>
<Toolbar sideDrawerTogglerHandler={this.sideDrawerTogglerHandler}/>
<SideDrawer SideDrawerOpen={this.state.sidedrawer} sideDrawerCloseHandler={this.sideDrawerCloseHandler} />
<main className={classes.co}>
{this.props.children}
</main>
</Aux>
)
}
}
export default Layout;
现在,当我运行我的 react 应用程序时,它会抛出一个错误:
sidedrawer
没有在第 19 行定义
有人可以帮助我修复和理解错误吗?
第 18 - 19 行恰好是我代码中的这一部分
sideDrawerTogglerHandler = () => {
this.setState({sidedrawer: !sidedrawer})
}
解决方案
您必须sidedrawer
从您所在的州获得:
sideDrawerTogglerHandler = () => {
this.setState((previousState) => {
return {sidedrawer: !previousState.sidedrawer}
})
}
推荐阅读
- reactjs - 如何在 Material UI 中的 Avatar 组件上使用阴影
- python - 如果一列在数据框中有多个值,则创建多行
- xcode - XCode 12 中单元测试用例的顺序是什么?
- javascript - 如何解决错误:ENOENT:没有这样的文件或目录
- r - 为什么 rbind 在用户定义的函数中不起作用?
- javascript - Papaparse没有解析最后一个文件
- c++ - 基本数组功能难点
- powershell - 将多个文件名中每个单词的首字母大写(Powershell)
- git - ADo 存储库:推送被拒绝,因为提交包含与策略指定模式不匹配的作者电子邮件
- c++ - 关于 Stroustrup 的书例中模板的 value_type 使用问题