今回は、React Native で日付データの入力を行う方法についてです。
React Native にも DatePickerAndroid と DatePickerIOS はあったようでしたが、非推奨となっていましたので、代わりに推奨されていた「@react-native-community/datetimepicker」で DatePicker を実装しました。
GitHub のページはこちらから。
GitHub – react-native-datetimepicker/datetimepicker: React Native date & time picker component for iOS, Android and Windows
https://github.com/react-native-datetimepicker/datetimepicker
さて実装方法ですが、まず下記のコマンドでライブラリをインストールします。
npm install @react-native-community/datetimepicker --save
インストールが完了したら、下記のサンプルコードを参考にプロジェクトに追加します。
まず、ライブラリのインポートと、Datepicker の値が変わったときに呼び出される関数を定義します。
import DateTimePicker from '@react-native-community/datetimepicker';
changeBirthday(event, selectedDate) {
this.setState({
birthday: selectedDate,
isShowDatePicker: !this.state.isShowDatePicker
});
}
なお、日付データは state の birthday で管理するようにしています。
あとは、render の return() に下記を追加します。
<Text>{this.state.birthday}</Text>
<Button
icon={<FontAwesome name="calendar" size={16} />}
onPress={() => this.setState({ isShowDatePicker: !this.state.isShowDatePicker })} />
{ this.state.isShowDatePicker ?
<DateTimePicker
mode="date"
display="calendar"
value={this.state.birthday}
locale="ja-JA"
onChange={this.changeBirthday} /> : null }
上記のように指定すると、Android の場合はカレンダーが表示され、iOS の場合はスピナーが表示されます。
なお、<DateTimePicker /> をただ追加するだけだと、スピナーもしくはカレンダーが表示されっぱなしになるはずなので、その辺りは上記を参考に、ボタン等をタップしたタイミングで表示/非表示を切り替える処理を追加してください。
処理としては以上です!
実装は簡単だったので、日付データを扱う際はこちらの導入をおすすめします。
以上、React Native で DatePicker を実装できるライブラリ「@react-native-community/datetimepicker」のご紹介でした。
ご参考になれば幸いです。