React setstate方法的回调未触发

时间:2018-11-23 09:22:07

标签: javascript asp.net reactjs callback setstate

我对React中的设置状态的回调函数有一个奇怪的问题。在React 15中一切正常,但是一旦我将react版本升级到16,设置状态的回调函数就不会被触发。我已经尝试了几乎所有内容,但无法清楚找出导致此问题的原因。

我尝试在set状态方法中使用匿名函数将函数绑定到构造函数中,但实际上没有一个起作用。

然后我尝试将react版本降级到15,然后运行该项目,并且能够触发回调方法(通过在回调函数中放置警报框进行测试)。

这是我在示例项目中使用的确切代码:

在单击按钮时调用此功能

incrementCounter() {
    this.setState({
        currentCount: this.state.currentCount + 1
    }, this.callbackfuncsajad.bind(this));
}

这是设置状态的回调函数

callbackfuncsajad = () => {
    alert('in the callback');
}

这是我的package.json,用于检查版本是否不匹配:

  • “反应”:“ ^ 15.6.2”
  • “ react-dom”:“ ^ 16.6.3”
  • “ @类型/反应”:“ ^ 15.0.35”
  • “ @ types / react-dom”:“ ^ 15.5.8”
  • “打字稿”:“ 2.4.1”

请注意: 我正在为我的项目使用Visual Studio 2017 ASP.NET的默认React.JS模板。默认情况下,该项目随附React 15和打字稿。

如果有人能弄清楚这个问题,将会为您带来很大的帮助。

谢谢。

1 个答案:

答案 0 :(得分:0)

嗨,我认为这是由于父级上下文所致,所以请尝试这样的事情。

incrementCounter() {
this.setState({
    currentCount: this.state.currentCount + 1
}, () => { this.callbackfuncsajad() });

}

希望有帮助。 如果您仍然遇到此问题,请共享代码以进行适当的扣除。