2017-03-02 61 views
2

有沒有辦法在發送另一個之前判斷屏幕上是否已經有Alert.alert()?如何防止React Native中的多個警報?

我有這樣的功能:

CheckInternet(){ 
    if(this.props.json.undefined){ 
    Alert.alert("Check your internet connection"); 
    } 
} 

ComponentDidUpdate(){ 
    this.CheckInternet(); 
} 

的事情是,我還有其他事情,函數內部正在做,我只是寫了相關的代碼,所以我不能拿CheckInternet功能外ComponentDidUpdate

問題是組件在獲取json後更新兩次,因此發送該警報兩次。我想通過使用能讓我知道屏幕上是否存在警報的條件來同時阻止兩個警報。我在Alert文檔中似乎沒有發現類似的東西。有任何想法嗎?

回答

2

試試這個:

CheckInternet(){ 
    if (!this.alertPresent) { 
     this.alertPresent = true; 
     if (this.props.json.undefined) { 
      Alert.alert("", "Check your internet connection", [{text: 'OK', onPress:() => { this.alertPresent = false } }], { cancelable: false }); 
     } else { 
      this.alertPresent = false; 
     } 
    } 
} 

ComponentDidUpdate(){ 
    this.CheckInternet(); 
} 
+0

你在哪裏定義this.alertPresent?在該州? –

+0

@LuisRizo我實際上並沒有把它變成一個狀態變量,因爲我不想讓它觸發重新渲染。但是如果你願意,你可以在'constructor()'中定義它。 – TheJizel

+0

是的,我一直在想它是在一個國家或商店會導致重新渲染,我不知道你可以設置這樣的變量,非常感謝你! –