清除TextInput文本时的清除状态

时间:2019-03-09 09:28:47

标签: react-native textinput

当我清除textInput时,我试图清除以前设置为状态的字符串。我试过下面的代码,但它不会清除状态中的字符串。请问我在做什么错?

<TextInput
    ref={(el) => this.myInput = el}
    onChangeText={this.onChangeText}
    text={this.state.mytext}
    placeholder='Enter Text'
    placeholderTextColor='#999'
    keyboardType='numeric'
    returnKeyType='next'
/>

onChangeText = (t) => {
    this.props.setData('mytext', t)
    if(t == ''){
        this.setState({
            newText: ''
        })
    }
}

3 个答案:

答案 0 :(得分:0)

您没有将value属性传递给TextInput。在您的情况下,TextInput不知道要寻找哪个值。

 <TextInput
     value={this.state.yourValue}
     onChangeText={yourValue => this.setState({ yourValue }) }
 /> 

答案 1 :(得分:0)

嗯,问题是我猜道具。不确定text中是否有一个名为TextInput的道具。 另外,如果可能想使用setState进行更改而无需检查。

<TextInput
    ref={(el) => this.myInput = el}
    onChangeText={this.onChangeText}
    value={this.state.mytext}
    placeholder='Enter Text'
    placeholderTextColor='#999'
    keyboardType='numeric'
    returnKeyType='next'
/>

onChangeText = (t) => {
    this.props.setData('mytext', t);
    this.setState({
       newText: t
    });
}

答案 2 :(得分:0)

您的问题是您没有更新TextInput使用的值。您正在将状态值设置为newValue,但尝试在组件中将其用作this.state.myText

因此,根据以下评论,当newText为空字符串时,您似乎想将myText的值设置为空字符串。

首先,我们应该使用正确的道具value来显示字符串的正确值。

第二,我们应该在onChangeText函数中处理状态的更改。注意,在重构的onChangeText中,我们检查以确保传递给它的文本的值等于一个空字符串。如果是,那么我们将更新newTextmyText的值,否则,如果它不是一个空字符串,则只需更新myText的值,以使该值显示在{{ 1}}是正确的。

TextInput