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!"
);
}
},
Das hat es geschafft, danke! Warum ändert das Entfernen der Klammern das Verhalten? – user3802348
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. –