_this2.setState不是对异步反应的函数

时间:2020-03-11 04:15:27

标签: reactjs asynchronous async-await

当onChange处理程序时,我有一些功能(Promise Resolve) 此函数将通过PromiseValue来获取数据数组,因此我使用.Then( result )来获取数组字段,当我用console.log打印result时,它可以工作。 但是问题出在this.setState上,因为总是出现错误并显示错误消息: _this2.setState不是函数

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

先感谢

2 个答案:

答案 0 :(得分:0)

如果没有更多的组件,则可能是由于您组件中的onChange处理程序未绑定到class实例而引起的。因此,当onChange触发并执行了承诺代码时,将不会定义this.setState

如果满足以下条件,则可以使其正常工作

  • 绑定类组件的构造函数中的函数,即this.handleChange = this.handleChange.bind(this)
  • 使用类字段语法,即const handleChange = () => { // your code };
  • 将组件转换为功能组件并使用了钩子,即useState;

尽管我没有代码的全文,但我可能错了!希望这会有所帮助:)

答案 1 :(得分:0)

在Promise.then()内部。 始终引用回调函数本身。因此就没有 setState 函数。

尝试定义一个新函数以将结果保存到状态中。