gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 00:41:31 25 4
gpt4 key购买 nike

我有一个关于 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com