【发布时间】:2022-01-18 05:34:32
【问题描述】:
您好,我试图在反应中设置状态,但它们没有正确更新,我有:
const [campusName, setCampusName] = useState("");
const [assists, setAssists] = useState({
name:"",
hour: "",
day: "",
month: "",
year: "",
studentid: "",
});
const [date, setDate] = useState({
day: "",
month: "",
year: "",
hour: "",
});
useEffect(()=>{
getData();
}, [])
const getData = async() =>{
//campus name
const campusResponse = await fetch("http://localhost:2000/info/campus/"+params.campusid);
const campusData = await campusResponse.json();
setCampusName(campusData.name);
//date
const date = new Date();
setDate({
day: date.getDate(),
month: date.getMonth()+1,
year: date.getFullYear(),
hour: `${date.getHours()}:${date.getMinutes()}`,
});
settingAssistence();
}
const settingAssistence = () => {
setAsists({
name: campusName,
campusid: params.campusid,
hour: date.hour,
day: date.day,
month: date.month,
year: date.year,
studentid: params.studentid,
})
console.log("result", asissts);
}
console.log 将协助对象打印为空,但如果我刷新页面 3 次它可以工作,我如何才能正确设置状态?使用 http://localhost:2000/info/campus/ 获取也很有效,并给了我正确的数据,但是当我将它设置到钩子中时没有正确更新。
【问题讨论】:
-
什么时候调用
setAssists函数?另请注意,反应批处理状态更新:控制台在设置状态后立即记录它可能不会反映最新状态。 -
完全为空或 '' 值未填充为 Campusid: "" ?因为这可能意味着很多不同的事情
-
让我知道,所以我们关闭这个,钩子有自己的行为,关闭和更新时的异步性质
-
campusid 不为空,但在这部分不需要,我会编辑它
标签: javascript reactjs express react-hooks