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