Uncaught TypeError: Невозможно прочитать свойство 'enqueueSetState' из неопределенного - PullRequest
0 голосов
/ 08 мая 2018

Я пытаюсь вызвать эту функцию с параметром для сопоставления filterCategories, но я получил эту ошибку.

            interface FrontPageComponents {
                filterCategories: GetTheActivity[];
            }

            export class FrontPage extends React.Component<RouteComponentProps<{}>, FrontPageComponents> {

        constructor() {
                super();
                this.state = {filterCategories: []};

        }
            public sort(event: string) {   


                     console.log(event);
                     return (

                         $.ajax({
                             type: "POST",
                             url: './Categ/GetFilterCategories',
                             dataType: 'json',
                             data: { _event: event },
                             success: (response) => {
                                 FrontPage.prototype.setState({                     //in this line the error
                                     filterCategories: response
                                 }) }
                         })

                         );



                } 

    public render() {
    return      <div>
    <Sorting />
    </div>;

    }   

}

в компоненте сортировки я вызываю такую ​​функцию: FrontPage.prototype.sort (event.target.innerText);

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Причина, по которой this не определена, заключается в том, что если вы вызываете this внутри метода успеха ajax, this ссылается на область ответа.

Попробуйте сделать что-то вроде: const that = this; над запросом ajax. После этого в методе успеха вызовите that.setState(...). В этом сценарии that относится к текущему экземпляру компонента.

Я знаю, что это грязное исправление, но оно работает.

0 голосов
/ 08 мая 2018

вместо

FrontPage.prototype.setState({
    filterCategories: response
})

просто сделай

this.setState({ filterCategories: response })

Поскольку вы используете функции стрелок, this все равно будет правильным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...