TextInput очищает текст, когда значение secureTextEntry равно true

Здравствуйте, я использую TextInput реагировать родной, и есть опция глаз для просмотра или скрытия пароля. Когда я устанавливаю для secureTextEntry значение true и вводю другой символ в поле ввода, он очищает все предыдущие данные и просто вводит символ.

Вот мой код:

<TextInput
 ref={ref => this._password = ref}
 style={[style.greyTextStyle, style.textinputStyle]}
 placeholder={strings.PASSWORD}
 secureTextEntry={this.state.securepass}
 placeholderTextColor={color.GREY_TEXT_COLOR}
 underlineColorAndroid='transparent'
 value={this.state.password}
 onChangeText={(text) => { this.setState({ password: text }) }} />

Нажав на глаз, я переключаю безопасный ввод текста.

showPassword() {
 this.setState({ securepass: !this.state.securepass });
 if (this.state.securepass == false) {
  this.setState({ passIcon: 'eye' })
 } else {
  this.setState({ passIcon: 'eye-off' })
 }
}

Пожалуйста помоги.

2 ответа

Я думаю, что это родное поведение iOS. Пожалуйста, проверьте этот https://github.com/facebook/react-native/issues/9148 и этот https://github.com/facebook/react-native/issues/12939. Вы можете попробовать сохранить значение перед переключением показать / скрыть пароль и установить снова после этого.

Установка свойства clearTextOnFocus ложь в вашем textInput может помочь

<TextInput
 clearTextOnFocus={false}
 ref={ref => this._password = ref}
 style={[style.greyTextStyle, style.textinputStyle]}
 placeholder={strings.PASSWORD}
 secureTextEntry={this.state.securepass}
 placeholderTextColor={color.GREY_TEXT_COLOR}
 underlineColorAndroid='transparent'
 value={this.state.password}
 onChangeText={(text) => { this.setState({ password: text }) }} />
Другие вопросы по тегам