Material UI の Date range picker は Pro Plan でしか使えなかったので、無料で使用できるものを探してたどり着いたのがこちら。
「react-dates」ライブラリです。
GitHub のページはこちら。
react-dates/react-dates: An easily internationalizable, mobile-friendly datepicker library for the web
https://github.com/react-dates/react-dates
インストールコマンドは下記のとおりです。
npm install --save react-dates moment
なお、moment.js は既に導入済みでしたら不要です。
import React, { useState } from 'react'; import moment from 'moment'; import { DateRangePicker } from 'react-dates'; import 'moment/locale/ja'; import 'react-dates/initialize'; import 'react-dates/lib/css/_datepicker.css'; export function AppDateRangePicker(props) { const [startDate, setStartDate] = useState(null); const [endDate, setEndDate] = useState(null); const [focusedInput, setFocusedInput] = useState(null); const onChange = (selectStartDate, selectEndDate) => { setStartDate(selectStartDate); setEndDate(selectEndDate); } return ( <DateRangePicker startDate={startDate} startDateId="startDateId" endDate={endDate} endDateId="endDateId" focusedInput={focusedInput} onFocusChange={setFocusedInput} onDatesChange={onChange} /> ); }
サンプルコードは下記のとおりです。
とりあえず、一番シンプルな書き方です。
こちらは入力欄と Picker
部分が一体化したものですが、<DayPickerRangeController>
を使えば Picker
のカレンダー部分のみを表示することもできます。
これと任意の入力欄、例えば Material UI の <TextField>
を使えば、ほかの入力欄と見た目をそろえることもできます。
こちらについては、GitHub のページに説明が載っていますので、こちらをご参照ください。
以上、React で Date range picker を実装できるライブラリ「react-dates」のご紹介でした。
ご参考になれば幸いです。