以前、カレンダー機能を実装できる React コンポーネント「react-calendar」をご紹介しましたが、今回は時間単位でカレンダーを表示できるライブラリ「react-big-calendar
」を触ってみたのでそちらをご紹介。
「react-calendar」では、月表示のカレンダーを簡単に表示できましたが、「react-big-calendar」では、月表示だけでなく、週表示や、24時間単位でカレンダーを表示することができます。
公式サイトと GitHub のページはこちらから。
Webpack App
http://jquense.github.io/react-big-calendar/examples/index.htmlGitHub – jquense/react-big-calendar: gcal/outlook like calendar component
https://github.com/jquense/react-big-calendar
実装方法ですが、まず下記のコマンドを実行します。
npm install react-big-calendar moment --save
インストールが終わったら、コードを実装します。
サンプルコードはこちらです。
import React, { Component } from 'react'; import { Calendar, momentLocalizer, Views } from 'react-big-calendar' import 'react-big-calendar/lib/css/react-big-calendar.css'; import moment from 'moment'; const localizer = momentLocalizer(moment); const eventList = [ { id: 0, title: 'All Day Event very long title', allDay: true, start: new Date('2020-03-01'), end: new Date('2020-03-01'), }, { id: 1, title: 'Long Event', allDay: false, start: new Date('2020-03-07 15:00'), end: new Date('2020-03-07 17:00'), } ]; class Calendar extends Component { constructor(props) { super(props); this.state = { } } render() { return ( <div> <Calendar localizer={localizer} events={eventList} timeslots={2} defaultView={Views.WEEK} onSelectEvent={event => alert(event.title)} style={{ height: 500 }} /> </div> ); } } export default Calendar;
こちらを実行すると、下記のようなカレンダーが表示されます。
CSS を調整していないので、ボタンの位置とかめちゃくちゃですが、とりあえず動作はします!
上のサンプルコードの 36、37行目の timeslots
と defaultView
を調整することで、24時間表示のカレンダーを1週間分表示しています。
なお、2時間毎とかに変更することもできますので、こちらは仕様に合わせて変更してください。
また、35行目の events
には必ずなにかしらの予定を入れてください。
最初、とりあえずカレンダーだけを表示させてみようと、events={null}
としていたら、エラーが発生し、表示出来ませんでした。
events
を追加したら、無事カレンダーを表示できました。
今後は日本語化と、あとは見た目をスマートフォンで使いやすいように調整したいと思います。
以上、React で 時間単位でカレンダーを表示できるコンポーネント「react-big-calendar」のご紹介でした。
ご参考になれば幸いです。