How to decode "secureTextEntry" textinput in react native - react-native

I am using TextInput in react native. There is a property secureTextEntry for password type.
Problem is, that this field returns dots in onChangeText function instead of my text -> ••••••••••••a
How can I decode this string?
I need to send this password into my server POST /login route, but I can't because it is hiden with dots.

use the TextInput like in the example below, you should not have problems..
const [password, setPassword] = useState('');
<TextInput
placeholder="Password"
secureTextEntry={true}
onChangeText={setPassword}
{password}
</TextInput>

Related

Browsers on mobile iOS devices - React Native TextInput onChangeText not updating text value

I am using a state to store the text and update it as typed. The value of the TextInput is then changed as the state is changed. This works as a packaged app but not in a an ios browser. Please let me know if there is a better way to implement this or make it work. Thank you.
const function1 = (props) => {
const [text, setText] = useState("");
return (
<View>
<TextInput
style={styles.textInput}
onChangeText={(t) => setText(t)}
placeholder="placeholder..."
value={text}
autoCorrect={false}
autoCapitalize="words"
onSubmitEditing={() => {
doSomething(text);
setText("");
}}
/>
<View/>
);
};

React Native | Forwarding to next input

I am using react native hook. I want to focus on the next textinput when I press Next. I get the error 'focus' is not defined. What is the cause and remedy?
const ref_input = useRef();
<TextInput
..
returnKeyType={'next'}
onSubmitEditing={() => ref_input.current.focus()}/>
<TextInput
..
ref={ref_input}/>

Is there a any way to get the text value of the TextInput using ref in react native?

I am getting the text of the TextInput using onChangeText event and state.
<View style={styles.inputContainerStyle}>
<TextInput
autoFoucs={true}
ref={inputRef}
style={styles.textInputStyle}
placeholder="type here ..."
placeholderTextColor='#838389'
multiline
underlineColorAndroid="transparent"
onChangeText={text => handleTextChange(text)}
value={selectedText}
/>
<TouchableOpacity style={styles.submitBtnWrapperStyle} onPress={() => handleMsgSend()}>
<Icon name={msgEditMode ? "check" : "paper-plane"} size={20} color="#ffffff" />
</TouchableOpacity>
</View>
...
// handle text change on textinput
const handleTextChange = text => {
channel && channel.typing();
setSelectedText(text);
}
But actually whenever text is changed, the render function also is called because of changing state value and it is making the whole screen more slow.
So I am looking for the alternative way to get the text not using onChangeText event.
Is there any native way to get the text using ref?
I hope kind help.
thanks...
Yes, you can access the value of text input using ref like this
this.inputRef._lastNativeText

How to show Next button in Android keyboard in React Native

I need to show Next button in Keyboard in React Native application when there are multiple TextInput fields are there.
Could anyone suggest, I have tried with returnKeyType = {"next"} , blurOnSubmit and onSubmitEditing props but no use.
Could anyone you please provided the solution for this?
Thanks in Advance.
Try the same without {}. returnKeyType = "next". This worked for me.
You can try onSubmitEditing as described in the docs. This method will be called when you click done on the keyboard. In the listner, use focus method to focus the required textInput.
render(){
return(
...
<TextInput
ref={(input) => this._username = input}
onSubmitEditing={() => this._email.focus()}
value={this.state.text}
blurOnSubmit={false} // prevent keyboard flickering
/>
<TextInput
ref={(input) => this._email = input}
onSubmitEditing={() => this._password.focus()} // or submit the form or focus next input and goes on
value={this.state.text}
blurOnSubmit={false}
/>
)
}

Disable Paste on React Native TextInput

Nothing in the docs about this. I want to disable the small popup below when clicking on a TextInput in React Native.
Any ideas ?
<TextInput
contextMenuHidden={true}
value={this.state.text}
onChangeText={(text) => this.setState({ text})}
/>
for stop copy paste the following code is
<TextInput contextMenuHidden={true}/>
for ios
<TextInput contextMenuHidden={true}
for Android
<View removeClippedSubviews={true}>
<TextInput contextMenuHidden={true} />
</View>
Surender Kumar's answer:
React Native 55.4: contextMenuHidden does not hide menu on Android - Disable Options on React-Native Text Input
Below solution works for me. I am clearing keyboard on onTouchEnd event
const [text1, setText1] = useState('')
const clearClipboard = () =>{
Clipboard.setString('')
}
const onChangeText = (text) =>{
//For android 12+ clipboard autofill option, dont allow text change more than one char..which means user is typing.
if(text1.length+1 >= text.length){
setText1(text)
}
}
<TextInput onChangeText={onChangeText} value={text1} contextMenuHidden={true} onTouchEnd={clearClipboard}></TextInput>