My Component is :
class TextInputComp extends Component {
constructor(props){
super();
this.state = { thetext: '' }
}
submitText = (text) => {
Alert.alert("Text Submitted!", text);
}
render() {
const renData = this.props.people((data, index) => {
return (
<View key={index} style={styles.card}>
<Text style={styles.names}> ID: {data.id} - Name: {data.name} </Text>
<TouchableOpacity
onPress={()=>this.refs.MyBox.focus()} >
<Text>Open</Text>
</TouchableOpacity>
</View>
)
});
return (
<View style={mystyles1.container}>
{renData}
<View>
<TextInput
ref='MyBox'
style={{height: 40}}
onChangeText={(thetext) => this.setState({thetext})}
/>
<TouchableOpacity
onPress = { () => this.submitText(this.state.thetext) }>
<Text style = {styles.ButtonText}> Submit </Text>
</TouchableOpacity>
</View>
</View>
);
}
}
I can show the data from {redData}
and focus
on TextInput
when clicked on Open
. I want to pass a value to the TextInput
. Say I want to pass the data.name
, so when onPress
on Open
, I want the data.name
to be already at the start of the TextInput
so I can pass it to the this.state.thetext
.
How can I achieve this? Many thanks.
You can make your
TextInput
controlled. For that you can passvalue
prop toTextInput
like thisNow on focus, all you have to do is to set the
thetext
state with the value you want to display inTextInput
like this