reactjs - 如何使用 useEffrect 函数获取最新值?
问题描述
这是我的代码:
export default function RosterSchedulerTable(props){
const [rosterData,setRosterData]=useState(JSON.parse(sessionStorage.getItem("rosterData")));
const [monthlyCalendar,setMonthlyCalendar]=useState(props.rosterSchedulerData.monthlyCalendar);
const [selectedRegion,setSelectedRegion]=useState(new SelectedRegion());
let mouseUp=useCallback(()=>{
console.log("mouse up");
//console.log(selectedRegion.inSelectMode);
SelectedRegionUtil.endSelect(selectedRegion,setSelectedRegion);
},[selectedRegion]);
useEffect(()=>{
setMonthlyCalendar(props.rosterSchedulerData.monthlyCalendar);
setRosterData(JSON.parse(sessionStorage.getItem("rosterData")));
document.addEventListener('mouseup',mouseUp);
return () => {
document.removeEventListener('mouseup', mouseUp)
}
},[mouseUp,props.rosterSchedulerData.monthlyCalendar]);
let temp={...props.rosterSchedulerData};
delete temp.monthlyCalendar;
console.log(monthlyCalendar.calendarDateList.length);
console.log(Object.keys(rosterData.rosterList['ITO1_1999-01-01'].shiftList).length);
return (
<table id="rosterTable">
</table>
)
}
props.rosterSchedulerData.monthlyCalendarsessionStorage.getItem("rosterData")' and
都由父组件提供。
问题是父组件更新参数时,会执行两次以下语句。
console.log(monthlyCalendar.calendarDateList.length);
console.log(Object.keys(rosterData.rosterList[**staffId**].shiftList).length);
并且第一次执行的结果总是返回旧值。
仅在第二次执行期间才会显示最新值。
这是一种可能的解决方法吗?因此,最新值将在第一次执行中显示。
非常感谢您
解决方案
推荐阅读
- c# - 更改端点地址后如何修复“无法识别的消息版本”
- python - 在 pyspark 数据框上导入架构
- pyspark - 连接具有不同列名的不同数据框
- python - 如何过滤具有特定属性的节点并使用networkx图保留路径
- spring - spring jpa query-simple select查询耗时太长
- python - 熊猫数据框中的多重分布正态性测试和转换
- python - 如何在 Python 中返回 JSON“真”
- hive - 在 Hive 元存储错误中注册 Delta 表
- warnings - jsonschema:向架构添加警告/弃用
- powershell - 使用 Powershell 和 7zip 通过起始字母将文件放入单独的 .7z