如何将 React Native 应用程序导航重置为 React Navigation 的当前屏幕

Posted

技术标签:

【中文标题】如何将 React Native 应用程序导航重置为 React Navigation 的当前屏幕【英文标题】:how can i reset the React Native app navigation to current screen of React Navigation 【发布时间】:2018-01-12 23:08:22 【问题描述】:

我正在尝试构建我的第一个 React Native 应用程序,但遇到了导航问题。 我的应用在 Stack Navigator 中有三个屏幕

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);

这很有效,因为我现在看不到返回按钮,但登录后我看到一个奇怪的向后滑动动画,我短暂地看到主屏幕,然后重定向到用户屏幕

我做错了什么?

【问题讨论】:

你可以参考这个***.com/questions/43090884/… 【参考方案1】:

您可以进行正常导航并禁用左侧标题(或使用您需要的任何内容进行更改)然后您可以gesturesEnabled: false 所以在 ios 上它不允许通过滑动返回...这不是最好的方法它(它很容易成为最糟糕的方式,因为你的堆栈实际上并没有重置,所以你的索引可能会搞砸)但我认为这是最快的解决方法


编辑:正如我目前看到的,他们已经修复了那个奇怪的动画,所以使用正常重置应该可以正常工作(日期 2018 年 3 月 26 日)

【讨论】:

以上是关于如何将 React Native 应用程序导航重置为 React Navigation 的当前屏幕的主要内容,如果未能解决你的问题,请参考以下文章

在 react-native-video 中,视频播放完毕后如何重置视频播放器?

如何在 react-native 中重置 ios 库?

如何在 react-native 中重置 IOS 文件夹

React-native 的领域。重置数据库

如何让 React Native 应用中的 MIUI 导航栏透明?

如何设计 React-Native Android 应用的导航器结构?