【React Native开发】React Native控件之DatePickerAndroid时间日期选择器组件讲解(34)

TraNevarez 9年前

来自: http://www.lcode.org/react-native控件之datepickerandroid时间日期选择器组件讲/

尊重版权,转载请注明出处

本文来自:江清清的技术专栏(http://www.lcode.org)

(一)前言

今天我们继续来看一下DatePickerAndroid时间日期选择器组件的讲解以及使用实例。

刚创建的React Native技术交流2群( 496601483 ),欢迎各位大牛,React Native技术爱好者加入交流!同时博客右侧欢迎微信扫描关注订阅号,移动技术干货,精彩文章技术推送!

该DatePickerAndroid控件会进行加载打开一个标准的Android时间日期选择器弹框,注意该控件只适合Android平台。可以看一下官方的实例代码:

try {      const {action, year, month, day} = await DatePickerAndroid.open({        // 对于当前的时间可以使用 `new Date()`         // May 25 2020. Month 0 is January. 使用具体的时间创建一个Data对象         date: new Date(2020, 4, 25)      });      if (action !== DatePickerAndroid.dismissedAction) {        // Selected year, month (0-11), day      }    } catch ({code, message}) {      console.warn('Cannot open date picker', message);    }

(二)方法

1.Promise<Object> open(options:Object)   staitc,静态方法,使用该方法进行加载弹出一个标准的Android时间日期选择器。该options(可选)参数有以下三种对象:

①:'date'   日期Date对象或者时间戳以毫秒单位-日期已默认格式显示

②:'minDate'  日期Date对象或者时间戳以毫秒单位-可以选择的最小时间

③:'maxDate' 日期Date对象或者时间戳以毫秒单位-可以选择的最大时间

该方法返回一个Promise对象,如果用户选择了日期,该被一个包含'action','year','month(0-11)','day'的对象调用。如果用户关闭了选择器,那么该Promise对象将会使用'DatePickerAndroid.dismissedAction'调用。

[注意]:原生的时间日期选择器当我们在使用'minDate'和'maxDate'参数的时候,可能在Android 4.0或者更低版本中出现界面不同的情况。

2.dateSetAction() ,static静态方法,选择时间日期选择器

3.dismissedAction(),static静态方法,关闭时间日期选择器

(三)使用实例

上面我们已经对时间日期选择的基本介绍和方法做了相关介绍,下面使用一个实战实例来对于DatePickerAndroid组件进行详细演示,具体实例代码如下:

/**   * Sample React Native App   * https://github.com/非死book/react-native   */  'use strict';  import React, {    AppRegistry,    Component,    StyleSheet,    Text,    View,    DatePickerAndroid,    TouchableHighlight,  } from 'react-native';  //简单封装一个组件  class CustomButton extends React.Component {    render() {      return (        <TouchableHighlight          style={styles.button}          underlayColor="#a5a5a5"          onPress={this.props.onPress}>          <Text style={styles.buttonText}>{this.props.text}</Text>        </TouchableHighlight>      );    }  }  class DataPickerDemo extends Component {    constructor(props){      super(props);      this.state={        presetDate: new Date(2016, 3, 5),        allDate: new Date(2020, 4, 5),        simpleText: '选择日期,默认今天',        minText: '选择日期,不能比今日再早',        maxText: '选择日期,不能比今日再晚',        presetText: '选择日期,指定2016/3/5',      };    }    //进行创建时间日期选择器    async showPicker(stateKey, options) {      try {        var newState = {};        const {action, year, month, day} = await DatePickerAndroid.open(options);              if (action === DatePickerAndroid.dismissedAction) {          newState[stateKey + 'Text'] = 'dismissed';        } else {          var date = new Date(year, month, day);          newState[stateKey + 'Text'] = date.toLocaleDateString();          newState[stateKey + 'Date'] = date;        }        this.setState(newState);      } catch ({code, message}) {        console.warn(`Error in example '${stateKey}': `, message);      }    }      render() {      return (        <View>          <Text style={styles.welcome}>              日期选择器组件实例          </Text>          <TouchableHighlight            style={styles.button}            underlayColor="#a5a5a5"            onPress={this.showPicker.bind(this, 'simple', {date: this.state.simpleDate})}>            <Text style={styles.buttonText}>点击弹出基本日期选择器</Text>          </TouchableHighlight>          <CustomButton text={this.state.presetText}           onPress={this.showPicker.bind(this, 'preset', {date: this.state.presetDate})}/>           <CustomButton text={this.state.minText}           onPress={this.showPicker.bind(this, 'min', {date: this.state.minDate,minDate:new Date()})}/>           <CustomButton text={this.state.maxText}           onPress={this.showPicker.bind(this, 'max', {date: this.state.maxDate,maxDate:new Date()})}/>        </View>      );    }  }  const styles = StyleSheet.create({    welcome: {      fontSize: 20,      textAlign: 'center',      margin: 10,    },    button: {      margin:5,      backgroundColor: 'white',      padding: 15,      borderBottomWidth: StyleSheet.hairlineWidth,      borderBottomColor: '#cdcdcd',    }  });    AppRegistry.registerComponent('DataPickerDemo', () => DataPickerDemo);

运行截图如下:

(四)最后总结

今天我们主要讲解学习了DatePickerAndroid基本相关介绍和使用详解,大家有问题可以加一下群React Native技术交流2群( 496601483 ).或者底下进行回复一下。

尊重原创,转载请注明:From Sky丶清( http://www.lcode.org/ ) 侵权必究!

关注我的订阅号(codedev123),每天分享移动开发技术(Android/IOS),项目管理以及博客文章!(欢迎关注,第一时间推送精彩文章)

关注我的微博,可以获得更多精彩内容