如何实现无副作用的React Native Password Show Hide

How to achieve React Native Password Show Hide without side effect

我想做一个密码框:

我的代码如下:

      <View style={styles.container}>
        <TextInput
          style={styles.textInput}
          value={text}
          onChangeText={text => this.setState({ text })}
          secureTextEntry={secureTextEntry}
          underlineColorAndroid="transparent"
        />
        <TouchableWithoutFeedback
          onPress={() => (showing ? this.hide() : this.show())}
        >
          <Image source={this.image} />
        </TouchableWithoutFeedback>
      </View>

但这会使我在单击更改图像时失去焦点。那么我怎样才能达到目标呢?

我认为您可以使用 "ref" 属性再次自动对焦密码输入。

在您的 TextInput 中添加 ref 属性:

  <View style={styles.container}>
    <TextInput
      ref={c => {this.passwordTextInput= c}} //add Reference Prop
      style={styles.textInput}
      value={text}
      onChangeText={text => this.setState({ text })}
      secureTextEntry={secureTextEntry}
      underlineColorAndroid="transparent"
    />

然后调用

 this.passwordTextInput.focus();

在更新状态后 this.hide() 和 this.show() 函数中。

您可以使用 secureTextEntry 道具。

React Native Doc