Передать значение в TextInput onPress

Мой компонент это:

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>
    );
  }
}

Я могу показать данные из {redData} а также focus на TextInput при нажатии на Open, Я хочу передать значение TextInput, Скажи, что я хочу передать data.name, так когда onPress на Open, Я хочу data.name быть уже в начале TextInput так что я могу передать его this.state.thetext,

Как мне этого добиться? Большое спасибо.

1 ответ

Решение

Вы можете сделать свой TextInput контролируется. За это вы можете пройти value опора для TextInput как это

<TextInput
  ref='MyBox'
  style={{height: 40}} 
  value={this.state.thetext}
  onChangeText={(thetext) => this.setState({thetext})}
  />

Теперь в фокусе, все, что вам нужно сделать, это установить thetext состояние со значением, которое вы хотите отобразить в TextInput как это

<TouchableOpacity
   onPress={()=>{this.refs.MyBox.focus(); this.setState({thetext: data.name})}} >
   <Text>Open</Text>
</TouchableOpacity>
Другие вопросы по тегам