Как отобразить выбранные дату и время в textinput в react native?

#react-native

#react-native

Вопрос:

m very new to React native. I Я использую библиотеку react-native-community / datetimepicker и нахожу это очень запутанным. Ниже приведен мой код, что я должен добавить, чтобы сделать его функциональным и отображать выбранные дату и время на экране? Я был бы признателен за вашу помощь!

 import React, {useState} from 'react';
import {View, Button, Platform} from 'react-native';
import DateTimePicker from '@react-native-community/datetimepicker';
 
export const App = () => {
  const [date, setDate] = useState(new Date(1598051730000));
  const [mode, setMode] = useState('date');
  const [show, setShow] = useState(false);
 
  const onChange = (event, selectedDate) => {
    const currentDate = selectedDate || date;
    setShow(Platform.OS === 'ios');
    setDate(currentDate);
  };
 
  const showMode = (currentMode) => {
    setShow(true);
    setMode(currentMode);
  };
 
  const showDatepicker = () => {
    showMode('date');
  };
 
  const showTimepicker = () => {
    showMode('time');
  };
 
  return (
    <View>
      <View>
        <Button onPress={showDatepicker} title="Show date picker!" />
      </View>
      <View>
        <Button onPress={showTimepicker} title="Show time picker!" />
      </View>
      {show amp;amp; (
        <DateTimePicker
          testID="dateTimePicker"
          value={date}
          mode={mode}
          is24Hour={true}
          display="default"
          onChange={onChange}
        />
      )}
    </View>
  );
};
  

Ответ №1:

Вы должны попробовать сохранить выбранную дату время где-нибудь, а затем вы можете показать его в любом месте, где захотите. Сделайте что-то вроде этого:

 import React, { useState } from "react";
import { Button, Text, View, StyleSheet, TouchableOpacity } from "react-native";
import DateTimePickerModal from "react-native-modal-datetime-picker"; //install and import
import { SafeAreaView } from "react-native";
 
 
export const Picker = () => {
 
  const [selectedDate, setselectedDate] = useState("");
  const [selectedTime, setselectedTime] = useState("");
 
  const [isDatePickerVisible, setDatePickerVisibility] = useState(false);
  const [isTimePickerVisible, setTimePickerVisibility] = useState(false);
 
  const showDatePicker = () => {
    setDatePickerVisibility(true);
  };
 
  const hideDatePicker = () => {
    setDatePickerVisibility(false);
  };
 
  const showTimePicker = () => {
    setTimePickerVisibility(true);
  };
 
  const hideTimePicker = () => {
    setTimePickerVisibility(false);
  };
 
  const handleDate = (date) => {
    setselectedDate(date.toDateString());
    hideDatePicker();
  };
 
 
  const handleTime = (time) => {
    setselectedTime(time.toLocaleTimeString());
    hideTimePicker();
  };
 
  return (
      <SafeAreaView>
        <View style={styles.container}>
          <View>
            <Button title="Show Date Picker" onPress={showDatePicker} />
            <DateTimePickerModal
                isVisible={isDatePickerVisible}
                mode="date"
                onConfirm={handleDate}
                onCancel={hideDatePicker}
                minimumDate={new Date()}
                maximumDate={new Date()}
            />
          </View>
          <View>
            <Button title="Show Time Picker" onPress={showTimePicker} />
            <DateTimePickerModal
                isVisible={isTimePickerVisible}
                mode="time"
                onConfirm={handleTime}
                onCancel={hideTimePicker}
            />
          </View>
          <View>
            <Text>{selectedDate}</Text>
            <Text>{selectedTime}</Text>
          </View>
        </View>
      </SafeAreaView>
  );
};
 
const styles = StyleSheet.create({
  container: {
    paddingTop: 300,
  },
});

  

Комментарии:

1. Здравствуйте, спасибо за ответ, я добавил предложенный вами код в существующий код, но он не работает

2. Ошибки нет, но выбранные дата и время вообще не отображаются, я думаю, что метод onChange ничего не делает. Могу ли я написать вам где-нибудь в частном порядке и отправить код?

3. Да, вы можете вставить код в pastebin и поделиться ссылкой здесь.

4. проверьте это pastebin.com/C228GUD6 Я думаю, он должен делать то, что ты хочешь

5. Да, теперь все работает нормально, спасибо, вы знаете, как указать максимальную дату?