2016-05-14 39 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而不是函數本身。但是你真正想要的是通過這個函數。沒有括號就會發生這種情況。 –