微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

尝试在时间模式下打开 React Native datetimepicker 时,应用程序崩溃没有错误

如何解决尝试在时间模式下打开 React Native datetimepicker 时,应用程序崩溃没有错误

我正在尝试实现 https://github.com/react-native-datetimepicker/datetimepicker,但不幸的是,当我尝试在时间模式下打开 DTPicker 时,应用程序崩溃,我什至没有在 logcat 中收到错误消息。

有用于日期模式的镜像 DateTimePicker,它可以按照我的意愿完美运行。

这是我的组件代码

constructor(props) {
    super(props)
    this.state = {
      text: '',date: '',time: '',selectedItem: 'mama',showDatePicker: false,showTimePicker: false,timestamp: new Date() 
    };
  }

<View>
 <MyTextInput
    innerRef={(component) => this.dateInput = component}
    btn={1}
    placeholder={'data'}
    isDateTime={true}
    onChangeText={(value) => this.setState({date: value})}
    onFocus={this.inputDate}
    value={this.state.date} />
                  
    {this.state.showDatePicker && (
     <DTPicker
        onChange={this.dateChange} 
        value={this.state.timestamp}
        mode={'date'} />
     )}

   <MyTextInput
      innerRef={(component) => this.timeInput = component}
      btn={1}
      placeholder={'czas'}
      isDateTime={true}
      onChangeText={(value) => this.setState({time: value})}
      onFocus={this.inputTime}
      value={this.state.time} />
                  
      {this.state.showTimePicker && (
       <DTPicker
          onChange={this.timeChange}
          value={this.state.timestamp}
          mode={'time'} />
       )}
      </View> 

上面代码中的一些函数

dateChange = (event,selectedDate) => {
        let newDate = new Date(selectedDate);
        let month =
          newDate.getMonth() < 9
            ? '0' + (newDate.getMonth() + 1)
            : newDate.getMonth() + 1;
        let date =
          newDate.getDate() < 10 ? '0' + newDate.getDate() : newDate.getDate();
        let dateText = newDate.getFullYear() + '-' + month + '-' + date;
        this.setState({
          date: dateText,timestamp: selectedDate,showDatePicker: false
        })
      }

      timeChange = (event,selectedDate) => {
        let newDate = new Date(selectedDate);
        let minutes =
          newDate.getMinutes() < 10
            ? '0' + newDate.getMinutes()
            : newDate.getMinutes();
        let hours =
          newDate.getHours() < 10 ? '0' + newDate.getHours() : newDate.getHours();
        let timeText = hours + ':' + minutes;
        this.setState({
          time: timeText,});
      };
inputDate = () => {
        this.setState({showDatePicker: true})
        this.dateInput.blur()
      }

inputTime = () => {
        this.setState({showTimePicker: true})
        this.timeInput.blur()
      }
export function DTPicker (props) {

    return (
        <View style={styles.container} >
            <DateTimePicker
                onChange={props.onChange} 
                value={props.value}
                mode={props.mode}
                display={'default'}
                is24Hour={'true'} />
        </View>
    )
}
export function MyTextInput(props) {
    const btn = props.btn;

    return (
        <View style={btn ? styles.container : styles.container2}>
            <TextInput
                style={btn ? styles.input : styles.input2}
                ref={props.innerRef}
                onChangeText={(value) => props.onChangeText(value)}
                value={props.value}
                placeholder={props.placeholder}
                onFocus={props.onFocus}
                onEndEditing={props.onEndEditing}
                showSoftInputOnFocus={props.isDateTime ? false : true} /> 
            
        </View>
    );
}

知道出了什么问题,我现在一无所知。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。