如何在 React Native 中使用状态从 TextInput 获取值?

Posted

技术标签:

【中文标题】如何在 React Native 中使用状态从 TextInput 获取值?【英文标题】:How to get value from TextInput using state in react native? 【发布时间】:2021-08-19 09:39:04 【问题描述】:

我正在尝试实现 TextInput,但当我需要从中获取文本时,我陷入了困境。 我从其他 *** 问题中尝试了很多选项,但对我没有任何帮助。

这是我使用 TextInput 的代码:

export default class HomeScreen extends Component 
  constructor(props) 
    super(props)
    this.state = 
      text: ''
    ;
  

show = () => 
        console.log(this.state.text)
      

render() 
          return (
            <View>
            <View style=backgroundColor: 'purple', height: '100%'>
                <View>
                  <Button title='test' onPress=this.show></Button>
                  <MyTextInput 
                    btn=1
                    placeholder='test'
                    isDateTime=false
                    onChangeText=(value) => this.setState(text: value)
                    value=this.state.text />
                </View>
                
              </View>
              
          </View>
          )
      

这里是 MyTextInput 代码:

export function MyTextInput(props) 
    const [show, setShow] = useState(false);
    const btn = props.btn;

    const inputType = () => 
        if(props.isDateTime) 
            setShow(true);
        
        else 
            setShow(false);
        
    
    return (
        <View style=btn ? styles.container : styles.container2>
            <TextInput
                style=btn ? styles.input : styles.input2
                ...this.props
                placeholder=props.placeholder
                onFocus=inputType
                showSoftInputOnFocus=props.isDateTime ? false : true />
            show && (
                <DTPicker />
            )
            
        </View>
    );

当我点击按钮时,我得到了这个:

[Info] 06-01 07:24:59.158  6962  7031 I ReactNativeJS: 

我的错误在哪里或者我应该做些什么不同的事情?

【问题讨论】:

这能回答你的问题吗? react native get TextInput value 不幸的是,没有。我从那里尝试了一些解决方案,但对我没有任何效果。 【参考方案1】:

你需要在TextInput中传递onChangeText=(value) => props.onChangeText(value)

export function MyTextInput(props) 
    const [show, setShow] = useState(false);
    const btn = props.btn;

    const inputType = () => 
        if(props.isDateTime) 
            setShow(true);
        
        else 
            setShow(false);
        
    
    return (
        <View style=btn ? styles.container : styles.container2>
            <TextInput
                onChangeText=(value) => props.onChangeText(value)
                style=btn ? styles.input : styles.input2
                ...this.props
                placeholder=props.placeholder
                onFocus=inputType
                showSoftInputOnFocus=props.isDateTime ? false : true />
            show && (
                <DTPicker />
            )
            
        </View>
    );

【讨论】:

当我这样做时,我有这个错误:TypeError: undefined is not an object (evalating 'this.props') 更改为 props.onChangeText 而不是 this.props.onChangeText 我忘记了,完成了。我很感激,花了很多时间。

以上是关于如何在 React Native 中使用状态从 TextInput 获取值?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 react native 中使用选择器从 redux 状态设置 usestate 的初始值?

React Native - 如何从父级获取 FlatList 项的值

如何将更改的状态发送到 react-native 中的组件?

如何使用 redux 模式在 react native 中刷新组件?

从组件 React Native 中访问状态

无法从 react-native-maps 循环多个标记