2017-03-02 22 views
2

Alert.alert()가 화면에 이미 있는지 다른 방법으로 보내기 전에 알 수있는 방법이 있습니까?React Native에서 여러 경고를 방지하는 방법은 무엇입니까?

나는이 기능을 가지고 :

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

ComponentDidUpdate(){ 
    this.CheckInternet(); 
} 

것은 내가 그 함수 내부에서 수행되는 다른 일을해야한다는 것입니다, 난 그냥 관련 코드를 작성, 그래서 나는 ComponentDidUpdate 외부 CheckInternet 기능을 할 수 없다.

문제는 json을 얻은 후 구성 요소가 두 번 업데이트되므로 경고가 두 번 전송되는 것입니다. 이미 화면에 경고가 있는지 여부를 알려주는 조건을 사용하여 동시에 두 개의 경고가 표시되는 것을 방지하고 싶습니다. 나는 Alert 문서에서 그런 것을 찾지 못하는 것 같습니다. 어떤 아이디어?

답변

2

이 시도 : 당신이 this.alertPresent을 정의 할

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

를? 국가에? –

+0

@LuisRizo 실제로 다시 렌더링을 시작하지 않기 때문에 상태 변수로 만들지 않았습니다. 그러나 원한다면'constructor()'에서 정의 할 수 있습니다. – TheJizel

+0

그래, 내가 주 또는 상점에서 다시 렌더링을하게 될지도 모른다고 생각하고 있었다. 변수를 설정할 수 있다는 것을 몰랐다. 대단히 감사합니다! –