2017-07-10 2 views
0

In einer nativen App reagiere ich etwas Text und dann ein Texteingabe auf dem Bildschirm gerendert. Ich versuche herauszufinden, wie ich den gleichen Text und den gleichen Textinput ausgeben kann, wenn ich im ursprünglichen Textfeld weitergebe. Ich dachte, dies rekursiv zu tun, aber ich bin mir nicht sicher, wie wo und wie die Funktion implementiert wird.Rendern auf TextInput Submit - React Native

+0

versuchen Sie, den gleichen Text und den gleichen Textinput auf dem neuen Bildschirm oder dem gleichen Bildschirm auszugeben? –

+0

@SastraNababan auf dem gleichen Bildschirm, unter dem Original – McD

Antwort

0

Wenn es auf demselben Bildschirm ist, können Sie den lokalen Status verwenden. Hier ist das Beispiel

class TestScreen extends Component { 
    constructor(props) { 
    super(props) 
    this. state = { 
     firstInput:'First Input', 
     secondInput:'' 
    } 
    this.submit = this.submit.bind(this) 
    } 

    submit(){ 
    this.setState({ secondInput: this.state.firstInput }) 
    } 


    render() { 
    return (
     <View style={{flex:1,marginTop:40}}> 

     <View> 
      <Text>Text Input #1</Text> 
      <TextInput 
      style={{height: 40, borderColor: 'gray', borderWidth: 1}} 
      onChangeText={(text)=> this.setState({firstText:text})} 
      value={this.state.firstInput} 
      /> 
      <Button 
       onPress={this.submit} 
       title="Submit" 
      /> 
     </View> 

     <View style={{marginTop:20}}> 
      <Text>Text Input #1</Text> 
      <TextInput 
      style={{height: 40, borderColor: 'gray', borderWidth: 1}} 
      value={this.state.secondInput} 
      /> 
     </View> 
     </View> 
    ); 
    } 
} 

Ich hoffe, dass diese Hilfe. Danke

+0

Sorry, ich verstehe nicht. Was meinst du auf unbestimmte Zeit? –

+0

Sorry, ich habe nur auf das Beispiel geschaut. Das versuche ich nicht. Nach dem Senden in einem Textinput möchte ich hinzufügen und neue leere Texteingabe auf dem Bildschirm nach dem Einreichen – McD

+0

Nicht einfach das Ventil im Textfeld ersetzen – McD

0

Perhap können Sie ref, Zustand, bedingte Rendering verwenden. Lassen Sie uns sprechen

const MyInputs = (props) => { 
    inputs =props.inputs 
    result=inputs.map(function(value,index){ 
    return(
     <TextInput key={index} style={styles.input} value={value} /> 
    ) 
    }) 

    return(
    <View> 
     {result} 
    </View> 
) 
} 


class TestScreen extends Component { 
    constructor(props) { 
    super(props) 
    this. state = { 
     inputs:[] 
    } 
    this.submit = this.submit.bind(this) 
    this.clearText = this.clearText.bind(this) 
    } 

    submit(){ 
    let lastInput=this._textInput._lastNativeText 
    let inputs=this.state.inputs 
    this._textInput.setNativeProps({text: ''}); 
    inputs.push(lastInput) 
    this.setState({ 
     inputs:inputs 
    }) 
    } 

    clearText =() => { 
    this.setState({ 
     inputCount: this.state.inputCount + 1, 
    }) 
    this._textInput.setNativeProps({text: ''}); 
    } 

    render() { 
    return (
     <View style={{flex:1,marginTop:40}}> 
     <View> 
      <Text>Text Input #1</Text> 
      <TextInput 
      style={styles.input} 
      ref={component => this._textInput = component} 
      /> 
      <Button onPress={this.submit} title="Submit" 
      /> 
     </View> 

     <MyInputs inputs={this.state.inputs}/> 
     </View> 
    ); 
    } 
} 
+0

Sorry, wenn ich etwas vermisse, aber was ist in diesem – McD

+0

Ich füge einfach fehlende MyInput Component –

Verwandte Themen