【发布时间】:2023-03-29 16:19:01
【问题描述】:
我有一个关于 React 中 set state 的回调函数的奇怪问题。在 React 15 中一切正常,但是一旦我将反应版本升级到 16,设置状态的回调函数就不会被触发。我几乎尝试了所有方法,但无法清楚地找出导致此问题的原因。
我尝试在构造函数中绑定函数,在 set state 方法中使用匿名函数,但它们都没有真正起作用。
然后我尝试将 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”
- “@types/react”:“^15.0.35”
- “@types/react-dom”:“^15.5.8”
- “打字稿”:“2.4.1”
附带说明: 我正在为我的项目使用 Visual Studio 2017 ASP.NET 的默认 React.JS 模板。该项目默认带有 React 15 和 typescript。
如果有人能解决这个问题,那将是一个很大的帮助。
谢谢。
【问题讨论】:
-
你可以尝试在构造函数中将该函数绑定到 this 并将其作为回调传递
-
请提供stackoverflow.com/help/mcve。不知道如何使用 incrementCounter。
this可能已经错了。 -
react和react-dom的版本不匹配。请保持react和react-dom的版本相同。如果你想使用最新版本的 react 就保留"react": "16.6.3"和"react-dom": "16.6.3" -
@klvenky 回调是一个箭头函数,所以不需要
bind。
标签: javascript asp.net reactjs callback setstate