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

React中setState方法修改this.state.todayDate不生效问题求助

问题原因及解决方案

  1. setState异步特性导致你误以为更新失败
    React中setState是异步批量执行的,你在调用setState后立刻打印this.state.todayDate,读取到的还是更新前的旧值,这是正常设计,不代表setState没有生效。如果需要确认更新后的状态,可以把打印逻辑放到setState的第二个回调参数中:
this.setState({ todayDate: tdayDate }, () => {
  // 回调会在state更新完成后触发,这里能拿到最新值
  console.log(this.state.todayDate)
})

另外你在componentDidMount中调用getDates后立刻发起axios请求,此时setState还没完成更新,请求携带的todayDate还是初始空值,如果需要携带更新后的日期发起请求,可以把axios调用逻辑放到上述setState的回调函数中。

  1. 日期绑定错误导致看不到状态生效的效果
    你在渲染送达时间选择框时,min属性写的是min={this.tdayDate},这里的this.tdayDate是不存在的——tdayDate只是getDates函数内部的局部变量,没有挂载到组件实例上。你已经在render开头从state中解构出了todayDate,直接把min属性改为min={todayDate}即可正确读取state中的值。

额外优化建议

JS中Date.getMonth()返回的数值范围是0~11,0对应1月、11对应12月,你直接拼接的话月份会比实际月份小1,需要改成new Date().getMonth() + 1才能拿到正确的月份值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 14:21:01