详解React Native开源时间日期选择器组件(react-native-datetime)


Posted in Javascript onSeptember 13, 2017

项目介绍

该组件进行封装一个时间日期选择器,同时适配Android、iOS双平台,该组件基于@remobile/react-native-datetime-picker进行开发而来

配置安装

npm install react-native-datetime --save

1.1.iOS环境配置

上面步骤完成之后,直接前台写js代码即可

1.2.Android环境配置

在android/setting.gradle文件中如下配置

...
include ':react-native-datetime'
project(':react-native-datetime').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-datetime/android')

在android/app/build.gradle文件中如下配置

...
dependencies {
  ...
  compile project(':react-native-datetime')
}

在MainActivity.java中进行注册模块

①.React Native>=0.18开始

import com.keyee.datetime.*; // <--- import
 
public class MainActivity extends ReactActivity {
 ......
 
 /**
  * A list of packages used by the app. If the app uses additional views
  * or modules besides the default ones, add more packages here.
  */
  @Override
  protected List<ReactPackage> getPackages() {
   return Arrays.<ReactPackage>asList(
    new RCTDateTimePickerPackage(this), // <------ add here
    new MainReactPackage());
  }
}

①.React Native<=0.17版本

import com.keyee.datetime.*; // <--- import
 
public class MainActivity extends Activity implements DefaultHardwareBackBtnHandler {
 ......
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  mReactRootView = new ReactRootView(this);
 
  mReactInstanceManager = ReactInstanceManager.builder()
   .setApplication(getApplication())
   .setBundleAssetName("index.android.bundle")
   .setJSMainModuleName("index.android")
   .addPackage(new MainReactPackage())
   .addPackage(new RCTDateTimePickerPackage(this))       // <------ add here
   .setUseDeveloperSupport(BuildConfig.DEBUG)
   .setInitialLifecycleState(LifecycleState.RESUMED)
   .build();
 
  mReactRootView.startReactApplication(mReactInstanceManager, "ExampleRN", null);
 
  setContentView(mReactRootView);
 }
 
 ......
}

运行截图

ios运行效果

详解React Native开源时间日期选择器组件(react-native-datetime)

android运行效果

详解React Native开源时间日期选择器组件(react-native-datetime)

使用方法

<DateTimePicker ref={(picker)=>{this.picker=picker}}/>
...
this.picker.showDatePicker(...)
this.picker.showTimePicker(...)
this.picker.showDateTimePicker(...)

在ios平台上面使用,需要确保当前DataTimePicker视图在顶部

使用实例

'use strict';
 
var React = require('react-native');
var {
  StyleSheet,
  TouchableOpacity,
  View,
  Text,
} = React;
 
var DateTimePicker = require('react-native-datetime');
var Button = require('@remobile/react-native-simple-button');
 
module.exports = React.createClass({
  getInitialState() {
    return {
      date: new Date(),
    }
  },
  showDatePicker() {
    var date = this.state.date;
    this.picker.showDatePicker(date, (d)=>{
      this.setState({date:d});
    });
  },
  showTimePicker() {
    var date = this.state.date;
    this.picker.showTimePicker(date, (d)=>{
      this.setState({date:d});
    });
  },
  showDateTimePicker() {
    var date = this.state.date;
    this.picker.showDateTimePicker(date, (d)=>{
      this.setState({date:d});
    });
  },
  render() {
    return (
      <View style={styles.container}>
        <Text style={{textAlign: 'center'}}>
          {this.state.date.toString()}
        </Text>
        <View style={{height:40}} />
        <Button onPress={this.showDatePicker}>showDatePicker</Button>
        <View style={{height:40}} />
        <Button onPress={this.showTimePicker}>showTimePicker</Button>
        <View style={{height:40}} />
        <Button onPress={this.showDateTimePicker}>showDateTimePicker</Button>
        <DateTimePicker ref={(picker)=>{this.picker=picker}}/>
      </View>
    );
  },
});
 
var styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    paddingTop:20,
  },
});

方法介绍

  • showDatePicker(date, callback(date))
  • showTimePicker(date, callback(date))
  • showDateTimePicker(date, callback(date))

属性介绍

  • cancelText (default: Cancel)
  • okText (default: Ok)

开源项目地址:https://github.com/cnjon/react-native-datetime

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript第一课
Feb 27 Javascript
加速IE的Javascript document输出的方法
Dec 02 Javascript
javascript处理table表格的代码
Dec 06 Javascript
在Iframe中获取父窗口中表单的值(示例代码)
Nov 22 Javascript
js四舍五入数学函数round使用实例
May 09 Javascript
jquery动感漂浮导航菜单代码分享
Apr 15 Javascript
jQuery插件扩展实例【添加回调函数】
Nov 26 Javascript
基于JavaScript实现验证码功能
Apr 01 Javascript
vue实现组件之间传值功能示例
Jul 13 Javascript
JavaScript多种页面刷新方法小结
Apr 04 Javascript
vue中使用v-for时为什么不能用index作为key
Apr 04 Javascript
微信小程序实现列表的横向滑动方式
Jul 15 Javascript
基于vue的短信验证码倒计时demo
Sep 13 #Javascript
BootStrap数据表格实例代码
Sep 13 #Javascript
使用Fullpage插件快速开发整屏翻页的页面
Sep 13 #Javascript
Angular CLI 安装和使用教程
Sep 13 #Javascript
JS库之Three.js 简易入门教程(详解之一)
Sep 13 #Javascript
详解VueRouter进阶之导航钩子和路由元信息
Sep 13 #Javascript
JS库中的Particles.js在vue上的运用案例分析
Sep 13 #Javascript
You might like
php function用法如何递归及return和echo区别
2014/03/07 PHP
PHP fastcgi模式上传大文件(大约有300多K)报错
2014/09/28 PHP
CI框架中redis缓存相关操作文件示例代码
2016/05/17 PHP
php脚本守护进程原理与实现方法详解
2017/07/20 PHP
FireFox中textNode分片的问题
2007/04/10 Javascript
javascript垃圾收集机制与内存泄漏详细解析
2013/11/11 Javascript
jQuery动态添加、删除元素的方法
2014/01/09 Javascript
jquery分页插件jpaginate在IE中不兼容问题
2014/04/22 Javascript
javascript实现英文首字母大写
2015/04/23 Javascript
jQuery实现鼠标点击弹出渐变层的方法
2015/07/09 Javascript
JavaScript获取浏览器信息的方法
2015/11/20 Javascript
浅谈jQuery的bind和unbind事件(绑定和解绑事件)
2017/03/02 Javascript
JS正则表达式判断有效数实例代码
2017/03/13 Javascript
从零开始学习Node.js系列教程四:多页面实现的数学运算示例
2017/04/13 Javascript
解决React Native端口号修改的方法
2017/07/28 Javascript
Android 自定义view仿微信相机单击拍照长按录视频按钮
2019/07/19 Javascript
使用JavaScript计算前一天和后一天的思路详解
2019/12/20 Javascript
jquery实现简易验证插件封装
2020/09/13 jQuery
Python对数据进行插值和下采样的方法
2018/07/03 Python
python 顺时针打印矩阵的超简洁代码
2018/11/14 Python
Python实现带参数的用户验证功能装饰器示例
2018/12/14 Python
pyqt5 从本地选择图片 并显示在label上的实例
2019/06/13 Python
关于Python不换行输出和不换行输出end=““不显示的问题(亲测已解决)
2020/10/27 Python
python中_del_还原数据的方法
2020/12/09 Python
Canvas 帧动画吃苹果小游戏
2020/08/05 HTML / CSS
OPPO手机官方商城:中国手机市场出货量第一品牌
2017/10/18 全球购物
城野医生官方海外旗舰店:风靡亚洲毛孔收敛水
2018/04/26 全球购物
Groupon比利时官方网站:特卖和网上购物高达-70%
2019/08/09 全球购物
销售高级职员求职信
2013/10/29 职场文书
《姥姥的剪纸》教学反思
2014/02/25 职场文书
欢迎领导标语
2014/06/27 职场文书
幼儿园小班个人总结
2015/02/12 职场文书
校运会新闻稿
2015/07/17 职场文书
2015年小学财务工作总结
2015/07/20 职场文书
新郎新娘致辞
2015/07/31 职场文书
给numpy.array增加维度的超简单方法
2021/06/02 Python