如何使用 DateTimePicker 值更新 TextInput?反应本机
How to update TextInput with DateTimePicker value? react native
我正在尝试实施 https://github.com/react-native-datetimepicker/datetimepicker。
我在想要 select 日期的地方创建 TextInput 并将其显示到此 TextInput 中,但没有任何反应。
我不知道该怎么做。
这是我的代码:
主要部件代码:
constructor(props) {
super(props)
this.state = {
text: '',
show: false,
timestamp: new Date(1598051730000)
};
}
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({
text: dateText,
timestamp: selectedDate,
show: false
})
console.log(this.state.text)
}
render() {
return (
<View>
<View style={{backgroundColor: 'purple', height: '100%'}}>
<View>
<MyTextInput
btn={1}
placeholder={'test'}
isDateTime={true}
onChangeText={(value) => this.setState({text: value})}
onFocus={this.inputType}
value={this.state.text} />
{this.state.show && (
<DTPicker
onChange={this.dateChange}
value={this.state.timestamp} />
)}
</View>
</View>
</View>
)
}
文本输入代码:
export function MyTextInput(props) {
const btn = props.btn;
return (
<View style={btn ? styles.container : styles.container2}>
<TextInput
style={btn ? styles.input : styles.input2}
onChangeText={(value) => props.onChangeText(value)}
placeholder={props.placeholder}
onFocus={props.onFocus}
showSoftInputOnFocus={props.isDateTime ? false : true} />
</View>
);
}
DateTimePicker 代码:
export function DTPicker (props) {
return (
<View style={styles.container} >
<DateTimePicker
onChange={props.onChange}
value={props.value}
mode={'date'}
is24Hour={'true'} />
</View>
)
}
我应该更改或添加什么以获取在 DTPicker 中 selecting 日期之后更新的 TextInput?
console.log dateChange() 函数正在显示正确的值,但 TextInput 没有更新:
ReactNativeJS: 2020-08-19
您没有将 value
属性绑定到 TextInput
组件。
export function MyTextInput(props) {
const btn = props.btn;
return (
<View style={btn ? styles.container : styles.container2}>
<TextInput
style={btn ? styles.input : styles.input2}
onChangeText={(value) => props.onChangeText(value)}
placeholder={props.placeholder}
onFocus={props.onFocus}
value={props.value} // Bind the value here like this.
showSoftInputOnFocus={props.isDateTime ? false : true} />
</View>
);
}
我正在尝试实施 https://github.com/react-native-datetimepicker/datetimepicker。 我在想要 select 日期的地方创建 TextInput 并将其显示到此 TextInput 中,但没有任何反应。 我不知道该怎么做。
这是我的代码:
主要部件代码:
constructor(props) {
super(props)
this.state = {
text: '',
show: false,
timestamp: new Date(1598051730000)
};
}
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({
text: dateText,
timestamp: selectedDate,
show: false
})
console.log(this.state.text)
}
render() {
return (
<View>
<View style={{backgroundColor: 'purple', height: '100%'}}>
<View>
<MyTextInput
btn={1}
placeholder={'test'}
isDateTime={true}
onChangeText={(value) => this.setState({text: value})}
onFocus={this.inputType}
value={this.state.text} />
{this.state.show && (
<DTPicker
onChange={this.dateChange}
value={this.state.timestamp} />
)}
</View>
</View>
</View>
)
}
文本输入代码:
export function MyTextInput(props) {
const btn = props.btn;
return (
<View style={btn ? styles.container : styles.container2}>
<TextInput
style={btn ? styles.input : styles.input2}
onChangeText={(value) => props.onChangeText(value)}
placeholder={props.placeholder}
onFocus={props.onFocus}
showSoftInputOnFocus={props.isDateTime ? false : true} />
</View>
);
}
DateTimePicker 代码:
export function DTPicker (props) {
return (
<View style={styles.container} >
<DateTimePicker
onChange={props.onChange}
value={props.value}
mode={'date'}
is24Hour={'true'} />
</View>
)
}
我应该更改或添加什么以获取在 DTPicker 中 selecting 日期之后更新的 TextInput? console.log dateChange() 函数正在显示正确的值,但 TextInput 没有更新:
ReactNativeJS: 2020-08-19
您没有将 value
属性绑定到 TextInput
组件。
export function MyTextInput(props) {
const btn = props.btn;
return (
<View style={btn ? styles.container : styles.container2}>
<TextInput
style={btn ? styles.input : styles.input2}
onChangeText={(value) => props.onChangeText(value)}
placeholder={props.placeholder}
onFocus={props.onFocus}
value={props.value} // Bind the value here like this.
showSoftInputOnFocus={props.isDateTime ? false : true} />
</View>
);
}