如何使用 DateTimePicker 值更新 TextInput?反应原生

Posted

技术标签:

【中文标题】如何使用 DateTimePicker 值更新 TextInput?反应原生【英文标题】:How to update TextInput with DateTimePicker value? react native 【发布时间】:2021-08-20 12:23:52 【问题描述】:

我正在尝试实现https://github.com/react-native-datetimepicker/datetimepicker。 我在要选择日期的地方创建 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>
    );

日期时间选择器代码:

export function DTPicker (props) 
    return (
        <View style=styles.container >
            <DateTimePicker
                onChange=props.onChange 
                value=props.value
                mode='date'
                is24Hour='true' />
        </View>
    )

我应该更改或添加什么来获取在 DTPicker 中选择日期后正在更新的 TextInput? dateChange() 函数中的 console.log 显示正确的值,但 TextInput 没有更新:

ReactNativeJS: 2020-08-19

【问题讨论】:

【参考方案1】:

您没有将 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>
    );

【讨论】:

但是当我在其中输入文本时它正在工作。编辑:好的,就是这样。谢谢你

以上是关于如何使用 DateTimePicker 值更新 TextInput?反应原生的主要内容,如果未能解决你的问题,请参考以下文章

如何使用引导模式更新引导日期时间选择器中的默认日期

如何设置datetimepicker的值

如何将使用 datetimepicker 获得的值转换为日期和时间?

winform中如何修改datetimepicker的时间值

C# DateTimePicker 显示值总是变化,如何设置使其固定?

如何将winforms datetimepicker设置为没有默认值?