react component error无法读取undefined的属性

时间:2016-12-28 13:03:45

标签: reactjs material-ui jsx

我是React的新手,我创建了这样的组件;

export default class CartoviewDrawer extends React.Component {

    constructor(props) {
        super(props);
        this.state = {open: false};
    }

    _handleToggle() {
        let open = this.state.open;
        this.setState({open: !open})
    }

    render() {
        return (
            <div>
                {/*<RaisedButton*/}
                {/*label="Toggle Drawer"*/}
                {/*onTouchTap={this.handleToggle}*/}
                {/*/>*/}
                <IconButton tooltip="Toggle Drawer"
                            onTouchTap={this._handleToggle}
                >
                    <i className="material-icons">list</i>
                </IconButton>
                <IconButton iconClassName="muidocs-icon-custom-github"/>
                <Drawer open={this.state.open}>
                    <MenuItem>Menu Item</MenuItem>
                    <MenuItem>Menu Item 2</MenuItem>
                </Drawer>
            </div>
        );
    }
}

在另一个文件中我通过;

导入该组件
import CartoviewDrawer from './cartoview_drawer'

然后我使用这个组件:

React.createElement(AppBar,toolbarOptions,React.createElement(CartoviewDrawer))

但是当我点击浏览器控制台中的图标错误并且没有出现抽屉时。 错误:

  

未捕获的TypeError:无法读取未定义的属性“open”

2 个答案:

答案 0 :(得分:2)

在组件的构造函数中添加绑定:

constructor(props) {
  super(props);
  ...
  this._handleToggle= this._handleToggle.bind(this);
}

答案 1 :(得分:1)

你错过了对这个&#39;的约束。 将onTouchTap调用更改为:

onTouchTap={this._handleToggle.bind(this)}