2016-05-14 17 views
0

In meiner React-nativen App habe ich einen Bildschirm, auf dem der Benutzer eine Schaltfläche drücken muss, um eine Antwort zu senden. Ich möchte, dass ein Warndialogfeld angezeigt wird, ob die Antwort richtig oder falsch ist. Also, ich rufe eine Funktion in der onPress Methode der TouchableHighlight Schaltfläche, und innerhalb dieser Funktion, die ich den Warndialog angeben. Dies führt jedoch dazu, dass der Alarmdialog immer wieder erscheint, da die Funktion in jedem Frame fortlaufend aufgerufen wird. Wie kann ich die Funktion nur einmal aufrufen lassen?Erstellen Sie Alarmdialog innerhalb einer React Native-Funktion?

Relevante Code: render Funktion

render: function() {      
    return (
     <View style={styles.container}> 
      <Text style={styles.title}>{this.state.title}</Text> 
      <TouchableHighlight style = {styles.button} 
        onPress={this.onSubmitPressed()} 
        underlayColor='#99d9f4'> 
        <Text style = {styles.buttonText}>SUBMIT</Text> 
      </TouchableHighlight> 
     </View> 
    ); 
}, 

Validierungsfunktion:

onSubmitPressed: function() { 
    if (this.checkSolution) { 
     Alert.alert(
      'Alert title', 
      "Correct!" 
     ); 
    } 
    else { 
     Alert.alert(
      'Alert title', 
      "Incorrect!" 
     ); 
    } 
}, 

Antwort

5

Sie onSubmitPressed fordern in Ihrer Funktion machen. Ändern Sie onPress={this.onSubmitPressed()} in onPress={this.onSubmitPressed} (beachten Sie die fehlenden Klammern).

+0

Das hat es geschafft, danke! Warum ändert das Entfernen der Klammern das Verhalten? – user3802348

+0

Mit den vorhandenen Klammern übergeben Sie das Ergebnis des Aufrufs an onPress nicht die Funktion selbst. Aber was Sie wirklich wollen, ist die Funktion zu übergeben. Das passiert ohne die Klammern. –

Verwandte Themen