Javascript react功能组件的setState未更新我的状态

Javascript react功能组件的setState未更新我的状态,javascript,reactjs,state,Javascript,Reactjs,State,我正在设置签入的开始和结束日期以及签出日期的状态。 我得到了ValidDataRange,它是一个有效日期和长度的数组。 尝试将total的状态设置为数组的长度乘以房间的价格,但不知何故没有更新我的total状态。总成本的记录是完全正确的 const RoomDetails = (props) => { const roomDetails = props.location.state; const [startDate, setStartDate] = useState

我正在设置签入的开始和结束日期以及签出日期的状态。 我得到了ValidDataRange,它是一个有效日期和长度的数组。 尝试将total的状态设置为数组的长度乘以房间的价格,但不知何故没有更新我的total状态。总成本的记录是完全正确的


const RoomDetails = (props) => {
    const roomDetails = props.location.state;

    const [startDate, setStartDate] = useState();
    const [startEnd, setEndDate] = useState();
    const [total, setTotal] = useState();


    const handleOnSelectCalendar = (startDate, endDate, validDateRange) => {
        // console.log(startDate, endDate, validDateRange.length);
        setStartDate(startDate);
        setEndDate(endDate);
        // console.log(roomDetails.price, validDateRange.length);
        // var totalCost = roomDetails.price * validDateRange.length;
        setTotal(roomDetails.price * validDateRange.length);
        console.log(startDate, endDate, total); // output: 2020-12-08 2020-12-11 undefined
    };
    return (...);
}


setState
是异步的。在设置状态之后立即同步地进行控制台日志记录,以查看该状态之后的样子很可能不会反映正确的值。如果要在
total
更改时查看值,请尝试以下操作:

useffect(()=>{
控制台日志(总计);
},[总数];

设置状态
是异步的。在设置状态之后立即同步地进行控制台日志记录,以查看该状态之后的样子很可能不会反映正确的值。如果要在
total
更改时查看值,请尝试以下操作:

useffect(()=>{
控制台日志(总计);
},[总数];

这是否回答了您的问题?看起来它确实更新了我的状态。但是它会在我的console.log之后更新async,所以我不会马上看到它。我需要使用useffect查看结果,并在total发生更改时将
total
传递给要记录的参数。这是我现在的想法。这是真的吗?这回答了你的问题吗?看起来它确实更新了我的状态。但是它会在我的console.log之后更新async,所以我不会马上看到它。我需要使用useffect查看结果,并在total发生更改时将
total
传递给要记录的参数。这是我现在的想法。这是真的吗?很好!我不知道。谢谢你的帮助,科里尼斯先生!我不知道。谢谢你的帮助,科里先生