Изменить: при дальнейшем осмотре кажется, что это происходит только в Android 6.0.1. Попробовав на нескольких устройствах с 6.0, это не было проблемой.
У меня есть очень простой фрагмент кода React Native, в котором я хочу очистить текст в TextInput. Это выглядит примерно так:
state = {
v: ""
};
_changeText = v => {
this.setState({ v });
};
clear = () => {
this.textInputRef.clear();
}
render() {
return (
<View style={styles.container}>
<TouchableOpacity onPress={this.clear}>
<Text> Clear </Text>
</TouchableOpacity>
<TextInput
ref={ref => this.textInputRef = ref}
value={this.state.v}
onChangeText={this._changeText}
/>
</View>
);
}
Теперь поведение, которое я ожидал, заключается в том, чтобы оставить поле ввода текста в фокусе и очистить текст. Вот что происходит - однако, как только я начинаю что-то печатать на клавиатуре, текст, который я ранее очистил, снова появляется в поле ввода текста. Очевидно, такая стойкость текста на самом деле нежелательна.
Кто-нибудь из вас когда-нибудь сталкивался с этой проблемой? Это ошибка RN или есть способ избежать такого поведения, не размывая клавиатуру?
Вот небольшой отрывок, чтобы прояснить, что я имею в виду: https://snack.expo.io/H1S9b5Mpe.
Если вы начнете печатать, нажмите «Очистить», а затем продолжите ввод, ранее показанный текст появится перед новым набранным текстом.