簡體   English   中英

反應 function 組件的 setState 未更新我的 state

[英]setState for react function component not updated my state

我將 state 設置為簽入和簽出日期的開始日期和結束日期。 我得到了validDateRange,它是一個有效日期和長度的數組。 嘗試將總的 state 設置為數組的長度乘以房間的價格,但以某種方式反應不更新我的總 state。 totalCost 的日志完全正確


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是異步的。 在設置 state 以查看 state 之后的樣子后立即同步控制台日志記錄很可能不會反映正確的值。 如果您想在total更改時查看該值,請嘗試以下操作:

useEffect(() => {
  console.log(total);
}, [total]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM