无法读取未定义的属性(读取“DateTime”)即使我检查 React.js 中是否有数据
2021-12-22
3751
我几周前才开始学习 React。所以,如果我问了一个很笼统的问题,我很抱歉。但是,如果你能帮助我,我将不胜感激!
-
问题 :无法读取未定义的属性(读取“DateTime”)
-
我尝试解决它的方法 :首先,我尝试一般性地解决它。我的意思是我添加条件来推进我的代码并重新渲染。此外,我检查数据是否存在。
-
代码
const changeWeekendDateColor = () => {
let eventArray = [];
let weekendArray = [];
if (weekendData && weekendData.event && weekendData.schedule) {
let status = false;
const dataEventLength = weekendData.event.length;
const dataWeekendLength = weekendData.schedule.length;
for (let i = 0; i <= dataEventLength; i++) {
eventArray.push(weekendData.event[i].DateTime.split("T")[0]);
}
for (let i = 0; i <= dataWeekendLength; i++) {
weekendArray.push(weekendData.schedule[i].split(" ")[0]);
}
}
for (let i = 0; i <= eventArray.length; i++) {
if (weekendArray.includes(eventArray[i])) return (status = false);
}
return status;
};
console.log(changeWeekendDateColor(weekendData));
WeekendData 就是这个
- 我的期望 :我添加了 if 语句
if (weekendData && weekendData.event && weekendData.schedule)
所以,我认为这应该是可行的,因为如果没有数据,它就不应该执行下一行。我不确定为什么我的代码无法接近 weekendData.event.DateTime...
1个回答
for
循环无法读取未定义的属性。
dataWeekendLength
有 7 个长度,但
weekendData.event
在数组中只有 1 个长度。
请参阅
WeekendData.schedule.length
...
schedule: Array(7)
这是代码中的
for
循环,
for (let i = 0; i <= dataEventLength; i++) {
eventArray.push(weekendData.event[i].DateTime.split("T")[0]);
}
for
循环 7 次,得到
dataEventLength
,
它是
weekendData.event
,
...
event: Array(1)
如果
for
循环继续
i = 1
,那么它将是
weekendData.event[1]
。
但是没有
weekendData.event[1]
,只有
weekendData.event[0]
.
该代码可以工作,但是数组只有一个。
jacobkim
2021-12-22