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 && (
<DateTimePicker
testID="dateTimePicker"
value={date}
mode={mode}
is24Hour={true}
display="default"
onChange={onChange}
/>
)}
</View>
);
};
解决方案
您应该尝试将选定的日期\时间保存在某处,然后您可以在任何您想要的地方显示它。做这样的事情:
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,
},
});
推荐阅读
- java - JComboBox 选择的索引更改用于使用按钮单击事件将不同的 JTextField 值发送到 JTable
- angular - 在整个应用程序中颤动变化数据,如角度行为主题
- java - SpringBoot 2.x 战争部署在 websphere 8.5.5.11 上失败并出现 jar 问题
- java - lp_solve 是否会改变约束以找到可行的解决方案?
- php - 我如何在身体问题中访问这些值,
- json - 使用 jq 更改 json 对象数组中的特定元素
- python - 从 Python 上的嵌套字典中提取所有信息
- mongodb - Mongodb 字段总和存在
- reactjs - React Native:动态创建的文本框值未更新
- android - java.lang.IllegalStateException:已添加片段:MovieFragment