详解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实现的图片马赛克后显示并切换加文字功能
Apr 21 Javascript
JavaScript 事件查询综合
Jul 13 Javascript
jQuery下的动画处理总结
Oct 10 Javascript
js基础知识(公有方法、私有方法、特权方法)
Nov 06 Javascript
JS正则表达式比较常见用法
Jan 26 Javascript
jQuery实现简单的DIV拖动效果
Feb 19 Javascript
跨域请求的完美解决方法(JSONP, CORS)
Jun 12 Javascript
浅谈js使用in和hasOwnProperty获取对象属性的区别
Apr 27 Javascript
Angular 4依赖注入学习教程之简介(一)
Jun 04 Javascript
使用layui+ajax实现简单的菜单权限管理及排序的方法
Sep 10 Javascript
详解Vue数据驱动原理
Nov 17 Javascript
JavaScript实现移动小精灵的案例代码
Dec 12 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
用Socket发送电子邮件
2006/10/09 PHP
smarty模板中拼接字符串的方法
2014/02/14 PHP
php调用淘宝开放API实现根据卖家昵称获取卖家店铺ID的方法
2015/07/29 PHP
Javascript写了一个清除“logo1_.exe”的杀毒工具(可扫描目录)
2007/02/09 Javascript
ExtJS 2.0 实用简明教程之布局概述
2009/04/29 Javascript
js下判断 iframe 是否加载完成的完美方法
2010/10/26 Javascript
js制作的鼠标悬浮时产生的下拉框效果
2012/10/27 Javascript
Node.js中require的工作原理浅析
2014/06/24 Javascript
javascript处理a标签超链接默认事件的方法
2015/06/29 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
jQuery 获取select选中值及清除选中状态
2016/12/13 Javascript
js实现前端分页页码管理
2017/01/06 Javascript
js学使用setTimeout实现轮循动画
2017/07/17 Javascript
Vue2.0 vue-source jsonp 跨域请求
2017/08/04 Javascript
vue 监听键盘回车事件详解 @keyup.enter || @keyup.enter.native
2018/08/25 Javascript
浅谈Vue.js 关于页面加载完成后执行一个方法的问题
2019/04/01 Javascript
vue实现按需加载组件及异步组件功能
2019/05/27 Javascript
vue中 数字相加为字串转化为数值的例子
2019/11/07 Javascript
vue实现移动端触屏拖拽功能
2020/08/21 Javascript
跨平台python异步回调机制实现和使用方法
2013/11/26 Python
浅谈Python的Django框架中的缓存控制
2015/07/24 Python
完美解决python中ndarray 默认用科学计数法显示的问题
2018/07/14 Python
使用pandas把某一列的字符值转换为数字的实例
2019/01/29 Python
django之使用celery-把耗时程序放到celery里面执行的方法
2019/07/12 Python
PyCharm取消波浪线、下划线和中划线的实现
2020/03/03 Python
弄清Pytorch显存的分配机制
2020/12/10 Python
详解CSS3的box-shadow属性制作边框阴影效果的方法
2016/05/10 HTML / CSS
女士鞋子、包包和服装在线,第一款10美元:ShoeDazzle
2019/07/26 全球购物
一篇.NET面试题
2014/09/29 面试题
Python是如何进行类型转换的
2013/06/09 面试题
计算机毕业生自荐信
2014/06/12 职场文书
班级心理活动总结
2014/07/04 职场文书
学校教学管理制度
2015/08/06 职场文书
某学校的2019年度工作报告范本
2019/10/11 职场文书
SQL语法CONSTRAINT约束操作详情
2022/01/18 MySQL
PYTHON基于Pyecharts绘制常见的直角坐标系图表
2022/04/28 Python