Очистить состояние, когда текст TextInput очищается - PullRequest
0 голосов
/ 09 марта 2019

Я пытаюсь очистить строку, которую я ранее установил для состояния, когда я очищаю 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 голосов
/ 09 марта 2019

Хм, проблема в том, что я думаю с опорой.Не совсем уверен, есть ли реквизит 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
    });
}
0 голосов
/ 09 марта 2019

Ваша проблема в том, что вы не обновляете значение, используемое TextInput. Вы устанавливаете значение в состоянии как newValue, однако вы пытаетесь использовать его в своем компоненте как this.state.myText.

Таким образом, основываясь на комментариях ниже, кажется, что вы хотите установить значение newText в пустую строку, когда myText - пустая строка.

Во-первых, мы должны использовать правильную опору value для отображения правильного значения строки.

Во-вторых, мы должны обработать изменение состояния в функции onChangeText. Обратите внимание, что в рефакторированном onChangeText мы проверяем, чтобы значение переданного ему текста было равно пустой строке. Если это так, мы обновляем значения newText и myText, в противном случае, если это не пустая строка, мы просто обновляем значение myText, чтобы отображаемое в TextInput значение было правильным.

<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)
    if(t === ''){
        this.setState({ newText: '', myText: '' })
    } else {
      this.setState({ myText: t})
    }
}
0 голосов
/ 09 марта 2019

Вы не передаете свойство value в TextInput.В вашем случае TextInput не знает, какое значение искать.

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