如何在React Native中单击按钮打开DatePicker

时间:2018-09-05 06:59:17

标签: react-native

我想知道如何在react native中单击按钮时显示日期选择器。我尝试过各种解决方案仍然没有成功,任何帮助都会有所帮助。 谢谢。

下面是我尝试过的

import React, { Component } from 'react';
import {
Platform,
StyleSheet,
View,DatePicker
} from 'react-native';
  

这是我的渲染方法

render(){
    return(
        <TouchableOpacity
        onPress={() => this.datePicker.onPressDate()}>
        <Text>
         Hello Date
        </Text>
    </TouchableOpacity>

  <DatePicker
    style={{width: 200}}
    ref={(picker) => { this.datePicker = picker; }}
    date={this.state.date}
    mode="date"
    placeholder="Select date"
    format="YYYY-MM-DD"
   minDate="2016-05-01"
   maxDate="2020-12-12"
   confirmBtnText="OK"
   cancelBtnText="Cancel"
   onDateChange={(date) => {this.setState({date: date})}}

    />     
    );
}
  

每当我跑步时,我都会遇到以下错误   enter image description here

4 个答案:

答案 0 :(得分:1)

您只需标记是否渲染选择器组件,然后将其打开就可以。像这样

render() {
  return (
    <View>
      <TouchableOpacity
        onPress={() => this.setState({ picker: !this.state.picker })}>
        <Text>Hello Date</Text>
      </TouchableOpacity>
      {this.renderPicker()}
    </View>
  );
}

renderPicker() {
  if (this.state.picker) {
    return (
      <DatePicker
        style={{ width: 200 }}
        ref={picker => {
          this.datePicker = picker;
        }}
        date={this.state.date}
        mode="date"
        placeholder="Select date"
        format="YYYY-MM-DD"
        minDate="2016-05-01"
        maxDate="2020-12-12"
        confirmBtnText="OK"
        cancelBtnText="Cancel"
        onDateChange={date => {
          this.setState({ date: date });
        }}
      />
    );
  }
}

答案 1 :(得分:1)

我正在使用ng add @ng-bootstrap/ng-bootstrap和以下逻辑:

react-native-datepicker

并从您的元素开始:

<DatePicker
showIcon={false}
hideText={true}
ref={(ref)=>this.datePickerRef=ref}
...
/>

答案 2 :(得分:0)

看看这个程序包react-native-modal-datetime-picker,它适用于跨平台,并且具有完美的设计和高度可定制性。

https://github.com/mmazzarolo/react-native-modal-datetime-picker

答案 3 :(得分:-1)

我建议对日期选择器使用 react-native-datepicker 库。它将为您提供更多的自定义选项,并且与Android和iOS两种平台兼容。

下面是我在一个应用程序中使用的示例代码:-

<View style={{ backgroundColor: 'transparent', margin: 5 }}>
            <DatePicker date={this.state.date} showIcon={false} placeholder="Birthday" mode="date" format="DD-MM-YYYY"
              customStyles={{
                dateInput: {
                  borderWidth: 0,
                  height: 50,
                  width: 170,
                  right: 30,
                },
                dateText: {
                  marginTop: 5,
                  color: 'white',
                  fontSize: 18,
                },
                placeholderText: {
                  marginTop: 5,
                  right: 10,
                  color: 'white',
                  fontSize: 18,
                }
              }
              }
              onDateChange={(date) => { this.setState({ date: date }) }} placeholderTextColor="white" underlineColorAndroid={'rgba(0,0,0,0)'} style={{ height: 50, width: 170, paddingLeft: 15, borderRadius: 4, backgroundColor: 'rgba(0,0,0,0.4)' }}></DatePicker>
          </View>

您可以找到库HERE