【React】時間単位でカレンダーを表示できるコンポーネント「react-big-calendar」

以前、カレンダー機能を実装できる React コンポーネント「react-calendar」をご紹介しましたが、今回は時間単位でカレンダーを表示できるライブラリ「react-big-calendar」を触ってみたのでそちらをご紹介。

「react-calendar」では、月表示のカレンダーを簡単に表示できましたが、「react-big-calendar」では、月表示だけでなく、週表示や、24時間単位でカレンダーを表示することができます。

公式サイトと GitHub のページはこちらから。

Webpack App
http://jquense.github.io/react-big-calendar/examples/index.html

GitHub – 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行目の timeslotsdefaultView を調整することで、24時間表示のカレンダーを1週間分表示しています。
なお、2時間毎とかに変更することもできますので、こちらは仕様に合わせて変更してください。

また、35行目の events には必ずなにかしらの予定を入れてください。
最初、とりあえずカレンダーだけを表示させてみようと、events={null} としていたら、エラーが発生し、表示出来ませんでした。
events を追加したら、無事カレンダーを表示できました。

今後は日本語化と、あとは見た目をスマートフォンで使いやすいように調整したいと思います。

 

以上、React で 時間単位でカレンダーを表示できるコンポーネント「react-big-calendar」のご紹介でした。
ご参考になれば幸いです。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG