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