2017-08-04 114 views
1

我正在尝试构建我的第一个React Native应用程序,并且导航问题停滞不前。 我的应用程序在堆栈导航如何将React Native应用导航重置为React导航的当前屏幕

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

我的导航

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

最初的路线是回家,所以应用程序在主屏幕打开后,从登录有攻花费的登录屏幕

三个屏幕

现在在我的登录组件中,成功验证后,我重定向到用户屏幕。

当我到用户屏幕,我看到一个后退按钮,并点击它带我回到登录屏幕

我想重置成功认证的导航堆栈,并设置用户屏幕为根,所以在登录功能我加

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

这工作,因为我不看现在的后退按钮,但登录后,我看到刷卡的一个奇怪的动画回来,并简要我看到主屏幕,然后重定向到用户屏幕

我在做什么错了吗?

+0

你可以参考这个https://stackoverflow.com/questions/43090884/复位最导航堆栈为到户屏幕反应的导航和 - 反应 - 正 –

回答

0

你可以做一个正常的导航,并禁用左边的标题(或无论你需要改变它),那么你可以gesturesEnabled: false IOS等不允许通过刷卡回去......这不是最好的方式来做到这一点(它可能很容易是最糟糕的方式,因为你的堆栈没有真正重置,所以你的索引可能会搞砸),但我认为这是最快的解决方法

相关问题