2016-05-14 61 views
0

在我的React原生应用程序中,我有一个屏幕,当用户按下按钮提交答案时,我想要一个警告对话框来显示答案是正确还是不正确。因此,我正在调用TouchableHighlight按钮的onPress方法中的一个函数,并在该函数内指定了警报对话框。但是,这会导致警报对话框一遍又一遍地重新出现,因为在每个帧中都会连续调用该功能。我怎样才能让函数只被调用一次?在React Native函数中创建警报对话框?

相关代码: 渲染功能

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

验证功能:

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

回答

5

你在你的渲染函数调用onSubmitPressed。将onPress={this.onSubmitPressed()}更改为onPress={this.onSubmitPressed}(注意缺少的括号)。

+0

这样做,谢谢!为什么删除括号会改变行为? – user3802348

+0

使用括号表示您将调用的结果传递给onPress而不是函数本身。但是你真正想要的是通过这个函数。没有括号就会发生这种情况。 –