javascript - React setstate 方法的回调未触发

标签 javascript asp.net reactjs callback setstate

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

我尝试在构造函数中绑定(bind)函数,在设置状态方法中使用匿名函数,但它们都没有真正起作用。

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

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

单击按钮时调用此函数

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

这是设置状态的回调函数

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

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

  • “ react ”:“^15.6.2”
  • "react-dom": "^16.6.3"
  • “@types/react”:“^15.0.35”
  • "@types/react-dom": "^15.5.8"
  • “ typescript ”:“2.4.1”

作为旁注: 我在我的项目中使用 Visual Studio 2017 ASP.NET 的默认 React.JS 模板。该项目默认附带 React 15 和 typescript。

如果有人能解决这个问题,那将是一个很大的帮助。

谢谢。

最佳答案

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

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

}

希望有帮助。 如果您仍然遇到这个问题,请分享代码以便正确推导。

关于javascript - React setstate 方法的回调未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53443771/

相关文章:

javascript - xhr javascript PUT 方法

javascript - 如何使用 Jest 模拟 es6 类

asp.net - 解释 ASP.NET WebAPI HttpRoute 管道

asp.net - ASP :GridView GridLines ="None" 的样式

javascript - req.session.passport.user 未定义

javascript - 使用 SignalR 获取角色中的用户列表

c# - 使用 jquery、通用处理程序和等待状态下载文件

reactjs - ListView 和 FlatList 有什么区别?

javascript - 从键盘写入 SVG 文本

reactjs - 具有多阶段 dockerfile 的多个 gitlab-ci 阶段