2017-08-04 16 views
1

Ich versuche, meine erste React Native App zu bauen, und ich bin mit einem Navigationsproblem fest. Meine app hat drei Bildschirme im Stapel NavigatorWie kann ich die React Native App Navigation auf den aktuellen Bildschirm von React Navigation zurücksetzen

Home 
Login 
User (User screen again is a Tab Navigator with three screens UserProfile, UserHome, UserSettings) 

Mein Navigator

const Navigator = StackNavigator(
    { 
    Home: { 
     screen: HomeScreen 
    }, 
    Login: { 
     screen: LoginScreen, 
    }, 
    User: { 
     screen: UserTabNavigator, 
    } 
    },{ 
    initialRouteName: 'Home' 
    }, 
    { 
    navigationOptions:() => ({ 
     headerTitleStyle: { 
     fontWeight: 'normal', 
     }, 
    }), 
    } 
); 

Die erste Route ist Heim so die App im Startbildschirm öffnet, von dort auf Anmeldung Antippen nimmt Bildschirm Login

Jetzt in meiner Login-Komponente, nach der erfolgreichen Authentifizierung ich umleiten auf den Benutzerbildschirm.

Als ich zum Benutzerbildschirm bekommen sehe ich eine Zurück-Taste und tippen sie mich zurück nimmt Bildschirm Login

ich den Navigationsstapel auf eine erfolgreiche Authentifizierung und stellen Sie Benutzerbildschirm als Root zurücksetzen wollte, also in ich die Login-Funktion hinzugefügt

const resetAction = NavigationActions.reset({ 
    index: 0, 
    actions: [ 
     NavigationActions.navigate({ routeName: 'User' }) 
    ] 
}); 
this.props.navigation.dispatch(resetAction); 

Dies funktioniert, wie ich die zurück-Taste jetzt nicht sehen, aber nach dem Login ich sehe eine seltsame Animation von Swipe zurück und kurz sehe ich den Bildschirm Start und dann auf Benutzer-Bildschirm umgeleitet

Was mache ich falsch?

+0

Sie können diese https://stackoverflow.com/questions/43090884/ verweisen Zurücksetzen des Navigationsstapels für den Startbildschirm-Reagieren-Navigation-und-Reagieren-n –

Antwort

0

Sie könnten eine normale Navigation tun und deaktivieren Sie die linke Kopfzeile (oder ändern Sie sie mit was auch immer Sie brauchen) dann können Sie gesturesEnabled: false so auf IOS es nicht erlauben, durch Swipe gehen ... es ist nicht der beste Weg, es zu tun (es kann leicht der schlechteste Weg sein, da Ihr Stack nicht wirklich zurückgesetzt wird, so dass Ihr Index versauen könnte), aber ich denke, es ist die schnellste Arbeit um

Verwandte Themen