You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React setState回调使用问题:isValidating state未更新始终为true

问题根因

错误出在handleOnSubmit方法中setState回调的传参写法:

// 你的错误写法
this.setState({
    isValidating : true,
}, this.validateFields());

此处你给validateFields加了括号,相当于直接执行该函数,而不是将函数作为回调传入,等待setState状态更新完成后再执行。执行顺序完全错乱:

  1. 触发提交事件进入handleOnSubmit
  2. 先同步执行validateFields,内部将isValidating设为false
  3. 最后才执行setState将isValidating更新为true,后续没有任何逻辑再修改这个状态,所以加载提示会一直显示。

修复方法

将setState的第二个参数改为函数引用即可,直接去掉括号:

this.setState({
    isValidating : true,
}, this.validateFields);

如果要避免上下文绑定异常,也可以用箭头函数包裹:

this.setState({
    isValidating : true,
}, () => this.validateFields());

内容的提问来源于stack exchange,提问作者Robert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 22:57:03