_this2.setState не является функцией реагирования асинхронно - PullRequest
0 голосов
/ 11 марта 2020

У меня есть некоторая функция (Promise Resolve), когда обработчик onChange Эта функция извлекает массив данных на PromiseValue, поэтому я использую .Then( result ), чтобы получить поле массива, и оно работает, когда я печатаю result с console.log. Но проблема на this.setState, потому что всегда выдается ошибка с сообщением об ошибке: _this2.setState не является функцией

getList(checkboxes['myCheckbox']).then(
    result =>   {
      this.setState({ CheckBox: result })           
    }
).catch( err =>  {
    console.log(err)
});   

спасибо, прежде чем

Ответы [ 2 ]

0 голосов
/ 11 марта 2020

Внутри Promise.then (). this всегда относится к самой функции обратного вызова. поэтому не было бы функции setState .

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

0 голосов
/ 11 марта 2020

Без большего количества компонента, я думаю, это, вероятно, происходит, потому что ваш обработчик onChange в вашем компоненте не привязан к экземпляру class. Поэтому, когда срабатывает onChange и выполняется код обещания, this.setState не будет определен.

Вы можете заставить его работать, если вы:

  • связали функции в конструктор компонента класса, т. е. this.handleChange = this.handleChange.bind(this)
  • использует синтаксис полей класса, т. е. const handleChange = () => { // your code };
  • преобразовал компонент в функциональный компонент и использовал хуки, т. е. useState;

Хотя я могу ошибаться, поскольку у меня нет полного текста кода! Надеюсь, это поможет:)

...