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

发布时间 - 2026-01-11 03:14:33    点击率:

项目介绍

该组件进行封装一个时间日期选择器,同时适配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运行效果

android运行效果

使用方法

<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

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


# react  # native日历组件  # 日期选择器  # 日期组件  # React日期时间显示组件的封装方法  # react如何用懒加载减少首屏加载时间  # React Native日期时间选择组件的示例代码  # React Native时间转换格式工具类分享  # React 如何使用时间戳计算得到开始和结束时间戳  # 而来  # 开源  # 大家多多  # 选择器  # packages  # additional  # modules  # list  # default  # add  # views  # Override  # import  # Native  # gt  # keyee  # extends  # ReactActivity  # lt  # public 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何配置任务调度?(Cron Job示例)  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  Laravel如何创建自定义中间件?(Middleware代码示例)  Laravel怎么实现模型属性的自动加密  php结合redis实现高并发下的抢购、秒杀功能的实例  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】  如何在新浪SAE免费搭建个人博客?  VIVO手机上del键无效OnKeyListener不响应的原因及解决方法  如何在阿里云香港服务器快速搭建网站?  韩国服务器如何优化跨境访问实现高效连接?  Laravel如何生成API文档?(Swagger/OpenAPI教程)  Linux网络带宽限制_tc配置实践解析【教程】  Laravel如何使用.env文件管理环境变量?(最佳实践)  ChatGPT 4.0官网入口地址 ChatGPT在线体验官网  SQL查询语句优化的实用方法总结  公司门户网站制作流程,华为官网怎么做?  Laravel如何集成Inertia.js与Vue/React?(安装配置)  利用python获取某年中每个月的第一天和最后一天  详解Android——蓝牙技术 带你实现终端间数据传输  Java解压缩zip - 解压缩多个文件或文件夹实例  网站制作大概多少钱一个,做一个平台网站大概多少钱?  Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  电商网站制作价格怎么算,网上拍卖流程以及规则?  如何用5美元大硬盘VPS安全高效搭建个人网站?  微信小程序 canvas开发实例及注意事项  今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】  千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】  Laravel如何与Pusher实现实时通信?(WebSocket示例)  phpredis提高消息队列的实时性方法(推荐)  HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】  制作企业网站建设方案,怎样建设一个公司网站?  独立制作一个网站多少钱,建立网站需要花多少钱?  Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】  如何在不使用负向后查找的情况下匹配特定条件前的换行符  Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  如何快速搭建高效香港服务器网站?  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录  如何快速搭建FTP站点实现文件共享?  Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面  高端云建站费用究竟需要多少预算?  香港服务器租用费用高吗?如何避免常见误区?  Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程  Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?