2017-10-08 76 views
0

我使用的反应导航仪的导航栈建立我的项目,我希望用户登录后用户重定向到主屏幕。重定向屏幕反应本土

我使用navigation.navigate到重定向,但会导致主屏幕在登录屏幕上显示后退按钮。

if (this.state.user) { 
    this.props.navigation.navigate('SignIn'); 
} 

有没有什么办法重置导航?或者我可以在不重置导航的情况下执行其他任何方法?

+0

的可能的复制[重置为在主屏幕的导航堆栈(导航做出反应和应对母语)](https://stackoverflow.com/questions/43090884/resetting-the-navigation-stack-for-the-主屏反应的导航 - 和 - 反应-N) – bennygenel

回答

0

我会这样做的方式是重置导航堆栈,然后将其重定向到主页。幸运的是,有一种方法可以执行NavigationActions.reset这种替换导航状态的新功能。

因此,对于你的情况,我会做到以下几点:

if (this.state.user) { 
    let newStack= NavigationActions.reset({ 
    index: 0, 
    actions: [ 
    NavigationActions.navigate({ routeName: 'Home'}) 
    ] 
    }) 
    this.props.navigation.dispatch(newStack); 
} 

此代码将创建一个新的堆栈与堆叠在主页的第一页(您可以用您的自定义routeName改变它),然后使用这个新堆栈作为我们的新导航堆栈。

您可以在官方文档中找到有关重置方法的更多信息。 https://reactnavigation.org/docs/navigators/navigation-actions#Reset