«TypeError: Невозможно прочитать свойство« selectPage »из неопределенного» - PullRequest
0 голосов
/ 24 февраля 2019

Я использую React, Material-UI и lodash, но следующий код в методе рендеринга выдает ошибку «TypeError: Невозможно прочитать свойство« selectPage »из undefined»:

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

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

I 'мы определили this.selectPage в конструкторе (props) следующим образом:

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 голосов
/ 24 февраля 2019

Вышеуказанный ответ очень правильный - вы должны изменить обратный вызов внутри вашей карты на функцию стрелки, которая сделает этот обратный вызов привязанным к его лексической области видимости , который является вашим классом и будет иметь selectPage собственность

0 голосов
/ 24 февраля 2019

Похоже, ваша проблема связана с использованием ключевого слова function в обратном вызове для map, попробуйте вместо этого использовать функцию стрелки.Вы можете прочитать больше о функциях стрелок здесь .

_.map(_.range(0, this.state.groupsdt.length), (i)=> {
    ....
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...