详解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 获取字符串字节数的多种方法
Jun 02 Javascript
将HTMLCollection/NodeList/伪数组转换成数组的实现方法
Jun 20 Javascript
js类型转换与引用类型详解(Boolean_Number_String)
Mar 07 Javascript
基于jquery实现的图片在各种分辨率下未知的容器内上下左右居中
May 11 Javascript
JavaScript框架是什么?怎样才能叫做框架?
Jul 01 Javascript
jquery判断input值不为空的方法
Jun 05 Javascript
js实现兼容PC端和移动端滑块拖动选择数字效果
Feb 16 Javascript
通过学习bootstrop导航条学会修改bootstrop颜色基调
Jun 11 Javascript
动手写一个angular版本的Message组件的方法
Dec 16 Javascript
vuex的使用及持久化state的方式详解
Jan 23 Javascript
使用mint-ui实现省市区三级联动效果的示例代码
Feb 09 Javascript
Bootstrap导航菜单点击后无法自动添加active的处理方法
Aug 10 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
Windows IIS PHP 5.2 安装与配置方法
2009/06/08 PHP
php设计模式 Builder(建造者模式)
2011/06/26 PHP
为jQuery.Treeview添加右键菜单的实现代码
2010/10/22 Javascript
js函数获取html中className所在的内容并去除标签
2013/09/08 Javascript
浅析AngularJS中的生命周期和延迟处理
2015/06/18 Javascript
JSONObject使用方法详解
2015/12/17 Javascript
JavaScript-html标题滚动效果的简单实现
2016/09/08 Javascript
jQuery中Nicescroll滚动条插件的用法
2016/11/10 Javascript
jQuery使用eraser.js插件实现擦除、刮刮卡效果的方法【附eraser.js下载】
2017/04/28 jQuery
JavaScript实现焦点进入文本框内关闭输入法的核心代码
2017/09/20 Javascript
js调用设备摄像头的方法
2018/07/19 Javascript
JavaScript捕捉事件和阻止冒泡事件实例分析
2018/08/03 Javascript
element-ui 时间选择器限制范围的实现(随动)
2019/01/09 Javascript
jquery+css3实现的经典弹出层效果示例
2020/05/16 jQuery
JavaScript实现京东快递单号查询
2020/11/30 Javascript
Python中的生成器和yield详细介绍
2015/01/09 Python
python实现数据库跨服务器迁移
2018/04/12 Python
使用Python 正则匹配两个特定字符之间的字符方法
2018/12/24 Python
python实时获取外部程序输出结果的方法
2019/01/12 Python
Jupyter notebook设置背景主题,字体大小及自动补全代码的操作
2020/04/13 Python
Python 实现国产SM3加密算法的示例代码
2020/09/21 Python
Python实现微信表情包炸群功能
2021/01/28 Python
HTML高亮关键字的实现代码
2018/10/22 HTML / CSS
玉兰油美国官网:OLAY美国
2018/10/25 全球购物
屈臣氏马来西亚官网:Watsons马来西亚
2019/06/15 全球购物
世界上最大的冷却器制造商:Igloo Coolers
2019/07/23 全球购物
高三体育教学反思
2014/01/29 职场文书
交通志愿者活动总结
2014/06/27 职场文书
国家奖学金获奖感言
2014/08/16 职场文书
无私奉献演讲稿
2014/09/04 职场文书
2014年采购部工作总结
2014/11/20 职场文书
2015年公共机构节能宣传周活动总结
2015/03/26 职场文书
同学聚会通知短信
2015/04/20 职场文书
python 提取html文本的方法
2021/05/20 Python
Dubbo+zookeeper搭配分布式服务的过程详解
2022/04/03 Java/Android
Mongodb 迁移数据块的流程介绍分析
2022/04/18 MongoDB