[英]React Calendar Timeline doesn't show fetched data
所以我来解决这个问题。 奇怪的是,即使我知道它在数组中,React-Calendar-Timeline 组件也不显示获取的项目。 但是,当我打开检查元素时,项目会按应有的方式呈现,并且一切都开始工作了。
我尝试通过在获取数据时实现加载屏幕来解决问题,但是问题仍然存在。
以下是时间线组件代码:
{!isLoading ? (
<CalendarContainer>
<Timeline
groups={rooms}
items={tenantsInCalendar} // this part is not rendering at the first time
defaultTimeStart={startDate}
defaultTimeEnd={endDate}
canResize={"both"}
stackItems
onItemSelect={handleItemClick}
onItemDeselect={() => dispatch(setCurrentTenant(null))}
minZoom={24 * 60 * 60 * 1000} // min zoom is 24 hours.
dragSnap={24 * 60 * 60 * 1000} // snap is at 24 hours.
canMove={true}
itemHeightRatio={0.75}
onItemMove={handleItemMove}
onItemResize={handleItemResize}
timeSteps={{
day: 1,
month: 1,
year: 1,
}}
></Timeline>
</CalendarContainer>
) : (
<Spinner />
)}
获取方法:
useEffect(() => { // converting fetched data to object for better/faster properties changement
fetchedTenants &&
setTenantsToObject(convertTenantsToObject(fetchedTenants));
}, [fetchedTenants]);
useEffect(() => { // converting tenants to other object type for calendar to understand. This data is rendered in calendar component.
tenantsToObject &&
setTenantsInCalendar(
convertTenantsToCalendarObjectItems(Object.values(tenantsToObject))
);
}, [tenantsToObject]);
useEffect(() => {
if (tenantsInCalendar.length > 0 && isLoading) {
handleTimeout(1000);
}
}, [tenantsInCalendar]);
const handleTimeout = (time) => { // sets some timeout for calendar to really render data at the first time. However, still doesn't work as it should.
setTimeout(() => {
setIsLoading(false);
}, time);
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.