2017-08-23 4 views
0

Dieser Code unten mein Splash-Screen ist, wird dieser Bildschirm angezeigt werden soll, wenn Standort gesetzt sonst muss ich AuthSplashScreen navigieren.Reagieren india Splash Screen navgation

componentDidUpdate() { 
     debugger; 
     if(this.props.location){ 
        return this.props.navigation.dispatch(NavigationActions.reset(
        { 
         index: 0, 
         actions: [ 
          NavigationActions.navigate({ routeName: 'Home'}) 
         ] 
        })); 
       }else{ 
        setTimeout(function(){ 
         return this.props.navigation.dispatch(NavigationActions.reset(
         { 
          index: 0, 
          actions: [ 
          NavigationActions.navigate({ routeName: 'AuthSplashScreen'}) 
          ] 
         })); 
        }, 1000) 
       } 
    } 

Hier sind die Themen sind: 1) Wenn ich SetTimeout verwende, Ausgang ist nicht Eigentum ‚naviagtion‘ undefinierter lesen. 2) If ich entferne die settimeout es wird perfekt funktionieren und navigieren AuthSplashScreen (wenn Standort nicht eingestellt ist)/Home (wenn der Standort eingestellt ist) wie erforderlich. Aber es gibt eine blinkende wie Anzeige zum Zeitpunkt der Änderung des Bildschirms von SplashScreen zu AuthSplashScreen.

Wie kann ich diesen blinkenden Effekt lösen? Oder muss ich die Logik der Verwaltung der Bildschirme ändern.

+0

Ich denke, Ihre Methode setTimeout Grund der Blinkeffekt ist –

+0

Blinzeln tritt nach der setTimeout Entfernen – subhajit

+0

Sie es in 'componentDidUpdate()' Methode tun, so dass, sobald der Wert von Prop aktualisiert wird, dann wird es nennen –

Antwort

0

Muss nur eine Referenz des Objekts davon behalten.

componentDidUpdate() { 
     debugger; 
     if(this.props.location){ 
        return this.props.navigation.dispatch(NavigationActions.reset(
        { 
         index: 0, 
         actions: [ 
          NavigationActions.navigate({ routeName: 'Home'}) 
         ] 
        })); 
       }else{ 
        var thisObj = this; 
        setTimeout(function(){ 
         return thisObj.props.navigation.dispatch(NavigationActions.reset(
         { 
          index: 0, 
          actions: [ 
          NavigationActions.navigate({ routeName: 'AuthSplashScreen'}) 
          ] 
         })); 
        }, 1000) 
       } 
    }