【发布时间】:2016-12-20 17:55:41
【问题描述】:
所以我正在尝试使用React 和Material-UI 创建一个应用程序,因此我设法启动并运行了 AppBar,但在让抽屉工作时遇到了一些问题。
我不断收到error: cannot read property open of null,并试图找出问题所在,但没有成功。我在 Stack 上找到了 2 篇关于这个确切问题的帖子,他们都没有能够解决我的问题的答案
Having trouble using Appbar + Drawer (Material UI + ReactJS)
这是我当前的代码:
constructor() {
super();
this.handleToggle = this.handleToggle.bind(this)
this.handleClose = this.handleClose.bind(this)
this.setState = {
open: false
};
}
handleToggle = () => this.setState({open: !this.state.open});
handleClose = () => this.setState({open: false});
render() {
return <MuiThemeProvider muiTheme={getMuiTheme()}>
<AppBar
onLeftIconButtonTouchTap={this.handleToggle}
onLeftIconButtonClick={this.handleToggle}
title="How long have you been alive?"
iconClassNameRight="muidocs-icon-navigation-expand-more" />
<Drawer
docked={false}
width={200}
open={this.state.open}
onRequestChange={(open) => this.setState({open})}
>
<MenuItem onTouchTap={this.handleClose}>Menu Item 1</MenuItem>
<MenuItem onTouchTap={this.handleClose}>Menu Item 2</MenuItem>
</Drawer>
</MuiThemeProvider>
}
(snippit 不应该运行,只显示我的相关代码)
我认为将this 绑定到render 可能会有所帮助,但它没有:(
【问题讨论】:
-
this.render = this.render.bind(this)删除这个并添加this.handleToggle = this. handleToggle.bind(this)和构造方法中的其他函数相同 -
所以我之前尝试过,但仍然遇到同样的错误(现在再试一次,仍然没有)。似乎错误来自
open={this.state.open}。不知道是什么导致它失败。
标签: javascript reactjs ecmascript-6 material-ui