Javascript 没有更新状态

Javascript 没有更新状态,javascript,reactjs,state,Javascript,Reactjs,State,我有点困惑,为什么我的这个函数不会像它应该的那样更新状态。我得到一个日期对象,然后将其转换为我想要的格式,但是当我尝试在最底部设置状态时,回调警报只是空白 如何使状态在该功能结束后立即更新 floorLastCleanedChange(date) { this.setState({ flooringLastCleanedTest: date }); var floorDate = new Date(date); alert(floorDate); var day

我有点困惑,为什么我的这个函数不会像它应该的那样更新状态。我得到一个日期对象,然后将其转换为我想要的格式,但是当我尝试在最底部设置状态时,回调警报只是空白

如何使状态在该功能结束后立即更新

floorLastCleanedChange(date) {
    this.setState({ flooringLastCleanedTest: date });
    var floorDate = new Date(date);
    alert(floorDate);
    var day = floorDate.getDate();
    if(day.toString().length === 1)
    {
        day = '0' + day;
    }
    var month = floorDate.getMonth() + 1;
    if(month.toString().length === 1)
    {
        month = '0' + month;
    }
    var year = floorDate.getFullYear();
    alert(month+"/"+day+"/"+year);
    this.setState({flooringLastCleaned: month+"/"+day+"/"+year}, alert(this.state.flooringLastCleaned));
}

试试这个。对setState的回调只是一个
函数
,您在回调中的代码中进行了一个
函数调用

setState(
  {flooringLastCleaned: month+"/"+day+"/"+year},
  () => alert(this.state.flooringLastCleaned);
);

试试这个。对setState的回调只是一个
函数
,您在回调中的代码中进行了一个
函数调用

setState(
  {flooringLastCleaned: month+"/"+day+"/"+year},
  () => alert(this.state.flooringLastCleaned);
);

好吧,这就成功了!我想我不太明白回调到底需要什么。非常感谢@推蜡笔回答得很好。关于您的注释,您需要将函数定义作为回调传递,而不调用它,稍后会调用它(当状态更新时)。在您的代码中,您正在立即调用警报,而不是传递警报。这就成功了!我想我不太明白回调到底需要什么。非常感谢@推蜡笔回答得很好。关于您的注释,您需要将函数定义作为回调传递,而不调用它,稍后会调用它(当状态更新时)。在代码中,您正在立即调用警报,而不是传递警报。