文章参考
问题描述
最近想做一个用户根据日历(schedule)选择时间创建会议的功能,千挑万选最终找到 “react-big-calendar” 组件
快速入门
import React, { Component } from "react";
import { Calendar, momentLocalizer } from "react-big-calendar";
import moment from "moment";
import "react-big-calendar/lib/css/react-big-calendar.css";
import 'moment/locale/zh-cn';
// 将日历选择为国际化
moment.locale('zh-cn');
const localizer = momentLocalizer(moment);
class SchedulePage extends Component {
constructor(...args) {
super(...args)
this.state = {
events: [
{
start: moment().toDate(),
end: moment()
.add(1, "days")
.toDate(),
title: "Some title"
}
]
};
}
handleSelect = ({ start, end }) => {
const title = window.prompt('New Event name')
console.log(start, end)
debugger
if (title)
this.setState({
events: [
...this.state.events,
{
start,
end,
title,
},
],
})
}
render() {
return (
<div className="App">
<Calendar
selectable
onSelectSlot={this.handleSelect}
localizer={localizer}
defaultDate={new Date()}
defaultView="month"
events={this.state.events}
style={{ height: "100vh" }}
/>
</div>
);
}
}
export default SchedulePage;
参数说明:
-
根据 moment 组件来实现国际化
-
"selectable"为true 表示用户可以在schedule 中选中
-
“events” 是一个数组,表示要在日历上显示的事件
-
“onSelectSlot” 表示用户选择完日历之后,触发的事件回调
效果如图: