原型图
一个很基础的页面

代码片段
<FullCalendar
ref={calendarRef}
height={560}
initialView="dayGridMonth"
plugins={[dayGridPlugin]}
locale="zh-cn"
buttonText={{
today: '今天',
}}
firstDay={1}
eventClick={(arg) => getDetail(arg)}
eventOrder={customOrder}
eventSources={[events, detailDays]}
eventColor={'white'}
eventTextColor={'#000'}
eventBackgroundColor="#fff"
customButtons={{
nextMonth: {
icon: 'chevron-right',
click: () => {
calendarRef.current.getApi().next();
changeMonth(calendarRef.current.calendar.view.currentStart);
},
},
prevMonth: {
icon: 'chevron-left',
click: () => {
calendarRef.current.getApi().prev();
changeMonth(calendarRef.current.calendar.view.currentStart);
},
},
todayBtn: {
text: '今天',
click: () => {
calendarRef.current.getApi().today();
changeMonth(calendarRef.current.calendar.view.currentStart);
},
},
}}
headerToolbar={{
left: 'title',
center: '',
right: 'todayBtn prevMonth nextMonth',
}}
slotLabelFormat={{
hour: '2-digit',
minute: '2-digit',
meridiem: false,
hour12: false,
}}
/>
探索记录
关于事件的自定义排序
const customOrder = (event1: any, event2: any) => {
if (event1.title.length < event2.title.length) {
return 1;
} else if (event1.title.length > event2.title.length) {
return -1;
} else {
return 0;
}
};
关于事件的自定义渲染
- *event使用callback*
- *eventContent 必须写*
events={async (arg, callback) => {
let events = [];
const res = await getSqaListApi();
res.map((event) => {
events.push({
title:
'<div style="font-size: 16px;display: flex;align-items: center"><span style="margin:0 5px;width:10px;height:10px;border-radius:50%;background-color:cadetblue;display: block"></span>' +
res.title +
'</div>',
start: res.start,
editable: false,
allDay: false,
});
});
callback(events);
}}
eventContent={(arg, createElement) => {
var italicEl = document.createElement('span');
italicEl.innerHTML = arg.event._def.title;
var arrayOfDomNodes = [italicEl];
return {
domNodes: arrayOfDomNodes,
};
}}
关于evnents数据
{
id
title
allDay
start
end
url
className
color
backgroundColor
borderColor
textColor
}
↑↑原文链接:https: