如何防止React Native中的多个警报?

时间:2017-03-02 22:16:29

标签: javascript react-native lifecycle alerts

有没有办法在发送另一个之前判断屏幕上是否已经有Alert.alert()?

我有这个功能:

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

ComponentDidUpdate(){
  this.CheckInternet();
}

问题是我在该函数中已经完成了其他事情,我只是编写了相关代码,因此我无法将CheckInternet函数放在ComponentDidUpdate之外。

问题是组件在获得json后会更新两次,因此会发送两次警报。我想通过一个条件来防止同时发出两个警报,这个条件会让我知道屏幕上是否有警报。我似乎没有在Alert文档中找到类似的内容。有什么想法吗?

1 个答案:

答案 0 :(得分:5)

试试这个:

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