React native 将本机日期选择器与Formik进行反应
我试图在表单提交时使用Formik从React native datepicker获取值,但是,我只得到了空值,似乎不知道如何传递这些值。我对native和Formik的反应相当陌生,希望能得到任何帮助。我只是想把结果记录在表单提交上。我也尝试过反作用钩形,但没有多大成功 My App.js代码:React native 将本机日期选择器与Formik进行反应,react-native,datepicker,formik,React Native,Datepicker,Formik,我试图在表单提交时使用Formik从React native datepicker获取值,但是,我只得到了空值,似乎不知道如何传递这些值。我对native和Formik的反应相当陌生,希望能得到任何帮助。我只是想把结果记录在表单提交上。我也尝试过反作用钩形,但没有多大成功 My App.js代码: import React, {useState} from 'react'; import {View, Text, StyleSheet, TextInput, Button, Alert} fro
import React, {useState} from 'react';
import {View, Text, StyleSheet, TextInput, Button, Alert} from 'react-native';
import { Formik } from 'formik';
import DatePicker from 'react-native-datepicker';
import { DateInput } from 'react-native-date-input';
const App = props =>{
const [date, setDate] = useState(new Date())
const [date2, setDate2] = useState(new Date())
return(
<Formik
initialValues={{ date: '', date2: '' }}
onSubmit={values => console.log(values)}
>
{({ onDateChange, handleBlur, handleSubmit, values }) => (
<View>
<Text style={styles.selectDate}>Lab Collection Date</Text>
<DatePicker
style={{width: 200, alignSelf: 'center'}}
date={date}
mode="date"
placeholder="select date"
format="DD MMM YYYY"
minDate="01 Jan 2021"
maxDate="30 Dec 2025"
confirmBtnText="Confirm"
cancelBtnText="Cancel"
customStyles={{
dateIcon: {
position: 'absolute',
left: 0,
top: 4,
marginLeft: 0
},
dateInput: {
marginLeft: 36,
borderRadius:4
}
// ... You can check the source to find the other keys.
}}
onDateChange={(newDate) => {setDate(newDate)}}
value={values.date}
onBlur={handleBlur('date')}
/>
<Text style={styles.selectDate}>Symptom Onset Date</Text>
<DatePicker
style={{width: 200, alignSelf: 'center'}}
date={date2}
mode="date"
placeholder="select date"
format="DD MMM YYYY"
minDate="01 Jan 2021"
maxDate="30 Dec 2025"
confirmBtnText="Confirm"
cancelBtnText="Cancel"
customStyles={{
dateIcon: {
position: 'absolute',
left: 0,
top: 4,
marginLeft: 0
},
dateInput: {
marginLeft: 36,
borderRadius:4
}
// ... You can check the source to find the other keys.
}}
onDateChange={(newDate2) => setDate2(newDate2)}
value={values.date2}
/>
<Button onPress={handleSubmit} title="Submit" />
</View>
)}
</Formik>
)
};
const styles = StyleSheet.create({
selectDate:{
fontFamily:'open-sans',
fontSize:20,
marginTop: 50,
marginBottom:10,
alignSelf:'center',
color:'red'
},
datebox:{
alignSelf:'center',
height:50,
width:500,
}
});
export default App;
import React,{useState}来自“React”;
从“react native”导入{视图、文本、样式表、文本输入、按钮、警报};
从'Formik'导入{Formik};
从“react native DatePicker”导入日期选择器;
从“react native date input”导入{DateInput};
const App=props=>{
const[date,setDate]=useState(新日期())
const[date2,setDate2]=useState(新日期())
返回(
console.log(值)}
>
{({onDateChange,handleBlur,handleSubmit,values})=>(
实验室收集日期
{setDate(newDate)}
value={values.date}
onBlur={handleBlur('date')}
/>
症状出现日期
setDate2(newDate2)}
value={values.date2}
/>
)}
)
};
const styles=StyleSheet.create({
选择日期:{
fontFamily:“开放式SAN”,
尺寸:20,
玛金托普:50,
marginBottom:10,
alignSelf:“中心”,
颜色:'红色'
},
日期框:{
alignSelf:“中心”,
身高:50,
宽度:500,
}
});
导出默认应用程序;
使用formik onDateChange中的setFieldValue('date1',value)来更改日期选择器
const-App=props=>{
const[date,setDate]=useState(新日期())
const[date2,setDate2]=useState(新日期())
返回(
console.log(值)}
>
{({onDateChange,handleBlur,handleSubmit,setFieldValue,values})=>(
实验室收集日期
{setFieldValue('date',newDate)}
value={values.date}
onBlur={handleBlur('date')}
/>
症状出现日期
setFieldValue('date2',newDate2)}
value={values.date2}
/>
)}
)
};
const styles=StyleSheet.create({
选择日期:{
fontFamily:“开放式SAN”,
尺寸:20,
玛金托普:50,
marginBottom:10,
对齐自我:“中心”,
颜色:“红色”
},
日期框:{
对齐自我:“中心”,
身高:50,
宽度:500,
}
});
导出默认应用程序代码>谢谢!只是对您的代码做了一个小的更改,因为即使日志记录起作用,选择也没有改变:onDateChange={(newDate)=>{setFieldValue('date',newDate);setDate(newDate)}}和onDateChange={(newDate2)=>{setFieldValue('date2',newDate2);setDate2(newDate2)}现在也可以用于选择。希望这种方法很好,因为我得到了期望的结果。再次感谢!