2017-03-02 8 views
2

Existe-t-il un moyen de savoir s'il y a déjà eu Alert.alert() à l'écran avant d'en envoyer un autre?Comment empêcher plusieurs alertes dans React Native?

J'ai cette fonction:

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

ComponentDidUpdate(){ 
    this.CheckInternet(); 
} 

La chose est que j'ai d'autres choses se fait dans cette fonction, je viens d'écrire le code correspondant, donc je ne peux pas prendre la fonction CheckInternet en dehors ComponentDidUpdate.

Le problème est que le composant est mis à jour deux fois après l'obtention du json, envoyant par conséquent cette alerte deux fois. Je voudrais éviter d'avoir deux alertes en même temps en utilisant une condition qui me permettrait de savoir s'il y a déjà une alerte sur l'écran ou non. Je ne trouve rien de semblable dans la documentation d'Alert. Des idées?

Répondre

2

Essayez ceci:

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

Où définissez-vous this.alertPresent? dans l'état? –

+0

@LuisRizo Je ne l'ai pas fait en fait une variable d'état parce que je ne voulais pas qu'elle se déclenche à nouveau. Mais vous pouvez le définir dans le 'constructor()' si vous le souhaitez. – TheJizel

+0

Ouais je pensais que c'était soit dans un état ou un magasin causerait un re-rendu, je ne savais pas que vous pouviez définir des variables comme ça, merci beaucoup! –