在 React-Big-Calendar 中,我正在尝试为月视图中的日期设置标题。我的标题数据是从一个外部组件设置的,该组件将日期和城市名称上传到 Firestore,并使用 componentDidMount 加载到我的日历组件中,并将其加载到称为标签的对象数组中。我希望标签对象比较日期,并将标题应用于日期,但我不明白如何将 firestore 对象连接到日历。
我可以 console.log 记录 firestore 数据并在控制台中查看它,当我比较 RBC 日期和硬编码日期时,我可以使用 IF 语句手动设置标题。我一直在寻找WEEKS的示例/信息......任何方向都有帮助。
我的日历
<DnDCalendar
localizer={localizer}
defaultDate={new Date()}
views={["day", "agenda", "work_week", "month", "week"]}
defaultView={"month"}
events={this.state.events}
onEventDrop={this.moveEvent}
resizable
onEventResize={this.resizeEvent}
selectable
onSelectEvent={this.selectEvent}
eventPropGetter={this.eventStyleGetter}
style={{ height: "85vh" }}
components={{
month: {
dateHeader: this.customDateHeader
}
}}
/>
组件DidMount
firebase
.firestore()
.collection("calLabel")
.onSnapshot(snapshot => {
let newLabels = [];
snapshot.forEach(doc => {
let label = doc.data();
label.id = doc.id;
newLabels.push(label);
this.setState({
labels: newLabels
});
});
});
customDateHeader 组件
customDateHeader = ({ label, date, drilldownView, onDrillDown }) => {
return (
<div className='row p-0 m-0'>
<div className='col-md-10 text-center p-0 mt-1'>City</div>
<div className='col-md-2 p-0'>
<button
className='btn btn-sm btn-outline-primary font-weight-bold mt-1'
onClick={onDrillDown}
>
{label}
</button>
</div>
</div>
);
};
我尝试了许多不同的 if 语句..
if (moment(date) === moment(this.state.labels[0].labelDate.toDate())) {
return (
jsx here...
)
如果日期匹配,希望看到标题填充城市名称。非常感谢任何方向或帮助,因为我在这里度过了很多天。