简体   繁体   English

反应本机嵌套导航-单击父抽屉路径时返回堆栈导航器的初始路径

[英]React native nested navigation - go back to initial route of stack navigator when the parent drawer route is clicked

I am using the following navigation setup in my react native project. 我在我的本机项目中使用以下导航设置。 Here I am using drawer navigation and stack navigation. 在这里,我正在使用抽屉式导航和堆栈导航。

import MainScreen from '../components/MainScreen';
import SettingsScreen from '../components/SettingsScreen';
import FriendsListScreen from '../components/FriendsListScreen';
import FriendProfileScreen from '../components/FriendProfileScreen';

// stack navigator - 1
const MainScreenStack = createStackNavigator(
    {
        MainScreen: MainScreen,
        FriendsListScreen: FriendsListScreen,
        FriendProfileScreen: FriendProfileScreen,
    },
    {
        initialRouteName: 'MainScreen',
        navigationOptions: {
            drawerLabel: "Home"
        },
    }
);

// stack navigator - 2
const SettingsScreenStack = createStackNavigator(
    {
        SettingsScreen: SettingsScreen
    },
    {
        navigationOptions: {
            drawerLabel: "Settings"
        },
    }
);

// drawer navigation (stack navigator 1 + 2)
const AppNavigator = DrawerNavigator({
  MainScreen: MainScreenStack,
  SettingsScreen: SettingsScreenStack
});

const AppContainer = createAppContainer(AppNavigator)

Scenario: 场景:

  • From the drawer, I am clicking "Home" link and navigating to MainScreen. 在抽屉中,我单击“主页”链接并导航到MainScreen。
  • From the MainScreen, I am clicking a button and navigating to FriendsListScreen. 在主屏幕上,我单击一个按钮,然后导航到FriendsListScreen。
  • From the FriendsListScreen, I am again opening the drawer and clicking the "Home" link. 在FriendsListScreen中,我再次打开抽屉并单击“主页”链接。 The drawer closes and no navigation happens. 抽屉关闭并且没有导航发生。

Mock-up: 小样:

在此处输入图片说明 在此处输入图片说明 在此处输入图片说明

Is there a way to navigate back to the MainScreen when I am clicking "Home" link from the drawer? 当我从抽屉中单击“主页”链接时,是否可以导航回主屏幕?

I got a workaround for this by creating a custom drawer content as below: 通过创建如下的自定义抽屉内容,我得到了解决方法:

import {DrawerItems, SafeAreaView, createStackNavigator, createDrawerNavigator, createAppContainer} from "react-navigation";

const DrawerContent = (props) => (
  <ScrollView>
    <SafeAreaView forceInset={{top: 'always', horizontal: 'never'}}>
      <DrawerItems {...props} onItemPress={ ({route, focused}) => {
        if (route.key === "MainScreen") {
          if (route.routes.length === 1) {
            props.navigation.closeDrawer();
          } else {
            props.navigation.navigate(route.routes[0].routeName);
          }
        } else {
          props.onItemPress({route, focused});
        }
      }} />
    </SafeAreaView>
  </ScrollView>
);

const AppNavigator = DrawerNavigator({
  MainScreen: MainScreenStack,
  SettingsScreen: SettingsScreenStack
}, {contentComponent: DrawerContent});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 React Native中带抽屉和堆栈导航器的嵌套导航 - Nested Navigation with drawer and stack navigator in React Native React Native 中的嵌套堆栈导航器和抽屉导航器 - Nested Stack Navigator and Drawer Navigator in React Native 反应导航 - 反应原生 - 如何阻止嵌套在抽屉导航器内的堆栈导航器中的抽屉? - React navigation - react native - How to block drawer in Stack Navigator nested inside Drawer Navigator? 路由到父导航器-React Native - Route to parent navigator - React Native 使用堆栈导航器反应原生抽屉导航 - React native drawer navigation with stack navigator React Native Navigator没有显示初始路线 - React Native Navigator is not showing initial route 在本机中没有为堆栈导航器中的键找到路由 - No route found for key in stack navigator in react native 基于从嵌套抽屉导航中选择的内容的本机更改堆栈导航器标题 - React-native change stack navigator title based on what is selected from nested drawer navigation 在React Native中如何在重置导航堆栈的同时从子Stack Navigator导航回父项 - How to navigate from a child Stack Navigator back to parent while resetting navigation stack at the same time, in React Native 退出抽屉内的子堆栈导航器时,如何使用反应导航转到initialRoute? - How to go to initialRoute with react-navigation when exiting a child stack navigator inside a drawer?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM