javascript - 反应功能组件的 setState 未更新我的状态
问题描述
我正在为签入和结帐日期的开始日期和结束日期设置状态。我得到了validDateRange,它是一个有效日期和长度的数组。尝试将总状态设置为数组的长度乘以房间的价格,但以某种方式反应不更新我的总状态。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
是异步的。在设置状态后立即同步控制台日志以查看该状态之后的样子很可能不会反映正确的值。如果您想在total
更改时查看值,请尝试以下操作:
useEffect(() => {
console.log(total);
}, [total]);
推荐阅读
- javascript - angularjs, HighCharts (Aw, Snap!) 崩溃
- jenkins - 詹金斯:无法连接到 localhost/0:0:0:0:0:0:0:1:9000
- jenkins - Jenkins:在每个节点上只为一个作业运行一个构建
- vba - 旧代码 1004、424、-2147024809 中的新运行时错误 (80070057)
- python-3.x - 序列化由importlib导入的dict时无法腌制/莳萝SwigPyObject
- javascript - Turn base64 Response into PDF
- sql - Oracle Apex 计数和显示列中的条目数
- php - NGINX 位置回退到 Symfony
- linux - Ubuntu 服务器 - Opam 安装问题
- python - 我该如何解决这个语法错误?