javascript - 让我的日期选择器传递他的价值的麻烦
问题描述
我正在学习本机反应,我正在尝试将日期从我的 datepicker 组件传递到表单,但我无法这样做。我试图在表单上创建日期选择器,但由于我的表单处于挂钩状态,我无法这样做。
这是日期选择器的代码
import DatePicker from 'react-native-datepicker';
//import DatePicker from the package we installed
export default class MyDatePicker extends Component {
constructor(props) {
super(props)
//set value in state for initial date
this.state = {
date: "15-05-2018"
}
}
render() {
return ( <View style = {
styles.container
}>
<DatePicker date = {
this.state.date
} //initial date from state
mode = "date" //The enum of date, datetime and time
placeholder = "select date"
format = "DD-MM-YYYY"
minDate = "01-01-1900"
maxDate = "01-01-2019"
confirmBtnText = "Confirm"
cancelBtnText = "Cancel"
androidMode = "spinner"
onDateChange = {
(date) => {
this.setState({
date: date
}, console.log({
date: date
}))
}
}
/>
</View>
)
}
}
日期选择器有效,控制台日志在字符串上显示日期,问题似乎出在我的表单和获取值的方式上
import MyDatePicker from './MyDatePicker';
const PersonalForm = ({onSubmit, errorMessage}) => {
const [vName, setvName] = useState('');
const [vSecondName, setvSecondName] = useState('');
const [vBirthDate, setvBirthDate] = useState('');
return (
<ScrollView>
<View style={styles.buttonContainer}>
<View style={styles.inputContainer}>
<TextInput style={styles.inputs}
placeholder="Nombre"
underlineColorAndroid='transparent'
onChangeText={newvName => setvName(newvName)}
value={vName}
autoCorrect={false}
autoCapitalize='characters'
/>
</View>
<View style={styles.inputContainer}>
<TextInput style={styles.inputs}
placeholder="Segundo nombre"
underlineColorAndroid='transparent'
onChangeText={newvSecondName => setvSecondName(newvSecondName)}
value={vSecondName}
autoCorrect={false}
autoCapitalize='characters'
/>
</View>
<View>
<MyDatePicker vBirthDate={date} />
</View>
</View>
<View style={styles.buttonContainer2}>
<TouchableOpacity
style={ styles.logout}
onPress={() => onSubmit(vName, vSecondName, vBirthDate), console.log(vName, vSecondName, vBirthDate)}
>
<Text style={styles.loginText}>GUARDAR</Text>
</TouchableOpacity>
</View>
</ScrollView>
);
};
解决方案
您的状态在 MyDatePicker 内部发生变化,但在 PersonalForm 内部没有变化,您需要在 PersonalForm 内部设置它,因为您将 vBirthDate 发送到 PersonalForm 内部的表格。
我建议更改 PersonalForm:.
首先在顶部导入 react-native-datepicker,然后:
在 PersonalForm 中,您有 MyDatePicker 将其删除并添加:
<DatePicker
date={vBirthDate} //initial date from state
mode="date" //The enum of date, datetime and time
placeholder="select date"
format="DD-MM-YYYY"
minDate="01-01-1900"
maxDate="01-01-2019"
confirmBtnText="Confirm"
cancelBtnText="Cancel"
androidMode="spinner"
onDateChange={(date) => setvBirthDate(date)}
/>
推荐阅读
- json - 在 Swift 中使用 Structs 的 JSON 解码器没有成员错误问题
- azure - 不支持构造函数“DisableAttribute(Type)”。为服务总线队列触发的 Azure 函数生成函数元数据时出错
- python - 输入请求时输入错误 Django Rest Framework
- java - 如何将新的 Java Oracle 许可证添加到我的应用程序?
- count - 日期范围之间的 Power BI 累积计数
- sql - 如何使用分组集根据列值计算总计?
- javascript - 在 Vue mount() 中使用 THREE.js 加载 STL 文件
- r - 向量中仅某些元素的 N 次排列
- python - 如何从 Git 子模块中正确导入 PyInstaller 构建的应用程序?
- java - 映射和管理实体的问题,Hibernate