“ TypeError:无法读取未定义的属性'selectPage'”

时间:2019-02-24 08:55:40

标签: reactjs lodash material-ui

我正在使用React,Material-UI和lodash,但是render方法中的以下代码给我一个错误提示 “ TypeError:无法读取未定义的属性'selectPage'”:

        tmppage = _.map(_.range(0, this.state.groupsdt.length), function (i) {

                    return (
                            <MenuItem >
                                <IconButton onClick={() => { {this.selectPage(i)} }}><WebAsset /></IconButton>
                                Page {i + 1}
                            </MenuItem>
                        )
        });

我在构造函数(props)中定义了this.selectPage,如下所示:

constructor(props){
    super(props);
    this.state = {
                    loading: true,
                    modalopen: false,
                    menuopen: false,
                    urls:null,
                    groupsdt:null,
                    webkey:null,

                    currentpage:0,

                    currentBreakpoint: 'lg',
                    mounted: false,
                    layouts: {lg: null},

                    opentopublic:false,

                  };

    this.addPage      = this.addPage.bind(this);
    this.selectPage   = this.selectPage.bind(this);
    this.addBox       = this.addBox.bind(this);
    this.removeBox    = this.removeBox.bind(this);
    this.doPost       = this.doPost.bind(this);

    this.doHome       = this.doHome.bind(this);
}

请告诉我我想念的东西...,谢谢您。

2 个答案:

答案 0 :(得分:0)

您的问题似乎是由于在function的回调中使用map关键字引起的,请改用箭头功能。您可以阅读有关箭头功能here的更多信息。

_.map(_.range(0, this.state.groupsdt.length), (i)=> {
    ....
});

答案 1 :(得分:0)

以上答案非常正确-您应将地图中的回调更改为箭头函数,以使此回调绑定到其词法作用域,这是您的类,并且具有 selectPage 属性