React中FullCalendar 5.11全天事件不显示问题求助
问题排查与解决方案
1. 修正全天事件的字段格式
FullCalendar 5.x官方不建议使用startStr/endStr字段,优先用start和end。对于全天事件,注意两个关键点:
allDay: true时,start用纯日期格式(比如'2022-08-23'),带时间的ISO字符串也可以,但时间部分会被忽略- 必须设置
end为起始日的次日(比如'2022-08-24'),因为FullCalendar的全天事件遵循左闭右开的区间规则,不设置end可能导致事件无法被正确识别
修正后的全天事件示例:
{ id: '64rjv5muo12ha2ih4al3caajue', title: 'Test all day event', backgroundColor: '#fbe983', allDay: true, start: '2022-08-23', end: '2022-08-24' }
2. 检查时区配置
时区不匹配是全天事件消失的常见原因。在FullCalendar配置里显式指定时区,确保和事件的时间格式一致:
<FullCalendar // 其他配置保留... timeZone='UTC' // 或者你的本地时区,比如'Asia/Shanghai' />
如果事件用的是UTC时间字符串,就把时区设为UTC;如果是本地时间,就对应设置本地时区。
3. 确保全天插槽有足够高度
虽然你看到了全天时段,但如果插槽高度被压缩到0,事件就会“隐形”。可以强制设置插槽最小高度:
<FullCalendar // 其他配置保留... allDaySlotMinHeight={60} />
4. 验证事件数据是否正确传递
在组件里打印events数组,确认全天事件确实被传入了日历组件,没有被过滤或篡改:
console.log('Calendar Events:', events);
额外测试方案
- 临时切换到
dayGridMonth视图,如果全天事件能显示,说明是timeGridDay视图的配置问题 - 移除
eventMaxStack={1}配置,排除堆叠限制导致的显示问题
内容的提问来源于stack exchange,提问作者Allen Y
相关产品推荐
相关产品推荐

