Javascript Reactjs:TypeError:无法读取属性';事件槽';未定义的

Javascript Reactjs:TypeError:无法读取属性';事件槽';未定义的,javascript,arrays,reactjs,Javascript,Arrays,Reactjs,我正在使用reactjs创建一个包含事件的日历,现在当日历显示当前月份时,当我单击“下一步”时,它显示的是四月月份。如果我再次单击“下一步”,我会得到以下错误 TypeError:无法读取未定义的属性“eventSlots” 该错误出现在一个函数中,在该函数中,我尝试在此处获取事件的天数 getDaysWithEvents() { // Get all the days in this months calendar view // Sibling Mont

我正在使用reactjs创建一个包含事件的日历,现在当日历显示当前月份时,当我单击“下一步”时,它显示的是四月月份。如果我再次单击“下一步”,我会得到以下错误

TypeError:无法读取未定义的属性“eventSlots”

该错误出现在一个函数中,在该函数中,我尝试在此处获取事件的天数

  getDaysWithEvents() {
        // Get all the days in this months calendar view
        // Sibling Months included
        const days = this.getCalendarDays();

        // Set Range Limits on calendar
        this.calendar.setStartDate(days[0]);
        this.calendar.setEndDate(days[days.length - 1]);

        // Iterate over each of the supplied events
        this.props.events.forEach((eventItem) => {

            const eventStart = this.getCalendarDayObject(eventItem.start);
            const eventEnd = this.getCalendarDayObject(eventItem.end);
            const eventMeta = this.getEventMeta(days, eventStart, eventEnd);

            if (eventMeta.isVisibleInView) {
                const eventLength = eventMeta.visibleEventLength;

                console.log("Days", days); 

                const eventSlotIndex = days[eventMeta.firstVisibleDayIndex].eventSlots.indexOf(false); // this line returns error
                //console.log("eventSotsindex", eventSlotIndex);
                let dayIndex = 0;

                // For each day in the event
                while (dayIndex < eventLength) {
                    // Clone the event object so we acn add day specfic data
                    const eventData = Object.assign({}, eventItem);

                    if (dayIndex === 0) {
                         // Flag first day of event
                        eventData.isFirstDay = true;
                    }

                    if (dayIndex === eventLength - 1) {
                        // Flag last day of event
                        eventData.isLastDay = true;
                    }

                    if (!eventData.isFirstDay || !eventData.isLastDay) {
                        // Flag between day of event
                        eventData.isBetweenDay = true;
                    }

                    // Apply Event Data to the correct slot for that day
                   //console.log(eventMeta, dayIndex, days);

                    if (days[eventMeta.firstVisibleDayIndex + dayIndex]) {
                       if (days[eventMeta.firstVisibleDayIndex + dayIndex].eventSlots) {
                            days[eventMeta.firstVisibleDayIndex + dayIndex].eventSlots[eventSlotIndex] = eventData;

                       }
                    }

                    // Move to next day of event
                    dayIndex++;
                }
            }
        });

        return days;
    }
getDaysWithEvents(){
//获取此月日历视图中的所有日期
//包括兄弟姐妹月数
const days=this.getCalendarDays();
//设置日历上的范围限制
此.calendar.setStartDate(天[0]);
this.calendar.setEndDate(天[days.length-1]);
//迭代提供的每个事件
this.props.events.forEach((eventItem)=>{
const eventStart=this.getCalendarDayObject(eventItem.start);
const eventEnd=this.getCalendarDayObject(eventItem.end);
const eventMeta=this.getEventMeta(天、事件开始、事件结束);
if(eventMeta.isVisibleInView){
const eventLength=eventMeta.visibleEventLength;
控制台日志(“天”,天);
const eventSlotIndex=days[eventMeta.firstVisibleDayIndex].eventSlots.indexOf(false);//此行返回错误
//日志(“eventSotsindex”,eventSlotIndex);
设dayIndex=0;
//活动中的每一天
while(dayIndex
导致问题的代码行:
const eventSlotIndex=days[eventMeta.firstVisibleDayIndex].eventSlots.indexOf(false)

注意:如果有人希望这里有一个包含完整代码的存储库,
clone
npm install
npm start


我需要做什么来解决这个问题?任何帮助或贡献都将不胜感激。

事件元。firstVisibleDayIndex
超出范围(即
eventMeta。firstVisibleDayIndex
大于或等于
天。长度

解决方法是将第一天索引重置为0,如下所示:

const firstDayIndex=eventMeta.firstVisibleDayIndex
您能在问题行之前控制台.log(eventMeta)吗?我试着在本地重现这个问题,但我似乎有编译错误(“无法解决‘react bootstrap/PopOver’”),你可以在那里删除这些错误,只是为了css,但我现在将向你发送一个屏幕minute@oneturkmen问题是
eventMeta.firstVisibleDayIndex
超出了数组的长度。例如,在我的例子中(我设法编译了它),
days
的长度是42天,而
eventMeta.firstVisibleDayIndex
的长度是56天。很明显,这返回了我这边的
未定义的
@oneturkmen我认为这是正确的,但不确定这就是我需要帮助的原因