LoginSignup
17
17

More than 5 years have passed since last update.

Reactコンポーネント内で使いやすいreact-input-calendarを使う

Last updated at Posted at 2016-01-19

Reactベースの簡単なWebページを作っている中で、Datepickerを使いたい要件があった。
jQuery UIのDatepickerでも良いのかもしれないけど、せっかくなので?Reactと相性の良さ気なものを探した。

それで辿り着いたのが、 react-input-calendar

見た目は、こんな感じ。

スクリーンショット 2016-02-11 16.14.38.png

インストール

% npm install react-input-calendar --save

使い方

Reactのコンポーネントのrender関数内で以下のように定義すると、とりあえず使える。
これは、READMEにある通り。

var Calendar = require('react-input-calendar');

中略

<Calendar format="DD/MM/YYYY" date="4-12-2014" />

自分が施したカスタマイズ

以下のカスタマイズをする方法。

  • 日付の書式を YYYY-MM-DD にする
  • 日付変更時に返ってくる日付の書式もYYYY-MM-DDにする
  • 初期表示時の日付を指定する
  • labelタグと紐付ける
  • 日付を選択したら、カレンダーが閉じるようにする
<label labelFor="ticketDate">登録日</label>
<Calendar
    // 日付の書式をYYYY-MM-DDにする
    format="YYYY-MM-DD"
    // onChange時に返ってくる日付の書式
    computableFormat="YYYY-MM-DD"
    // 日付変更時のコールバックここでは親コンポーネントの関数をセット
    onChange={this.props.changeDate}
    // 初期表示時の日付ここではpropsで親コンポーネントから本日をもらう
    date={this.props.ticketDate}
    // labelForとの紐付け
    inputFieldId="ticketDate"
    // 日付を選択したらカレンダーが閉じるようにする
    // propTypesがBooleanなので{true}を渡す
    closeOnSelect={true}
/>

結構色々な設定値があって、今回自分が使いたい範囲であれば、問題なく対応できた。
見た目も、今回CSSフレームワークに使った Milligram とも違和感なく溶け込んでくれたので、使って良かったコンポーネントでした。

17
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
17