Как я могу включить ящик только на определенном экране?

Я использую реагирующую навигацию и пытаюсь использовать навигацию по ящикам только на главном экране.

Мой код для настройки навигации выглядит следующим образом.

const WIDTH = Dimensions.get("window").width;

const DrawerConfig = {
  drawerWidth: WIDTH * 0.83,
  // drawerLockMode: "locked-open",
  contentComponent: ({ navigation }) => {
    return <SideDrawerScreen navigation={navigation} />;
  }
};

const AppNavigator = createStackNavigator(
  {
    Login: LoginScreen,
    Details: DetailsScreen,
    Home: {
      screen: HomeScreen,
      navigationOptions: () => ({
        header: null
      })
    }
  },
  { initialRouteName: "Login", headerMode: "none" }
);

const DrawerNavigator = createDrawerNavigator(
  {
    AppNavigator,
    Settings: {
      screen: SettingsScreen
    }
  },
  DrawerConfig
);

const AppContainer = createAppContainer(DrawerNavigator);

export default AppContainer;


Я просто хочу включить ящик только на главном экране.
Я думал создать навигатор по ящикам на главном экране и объединить его с навигатором по стеку, но я не могу найти способ, и я не знаю, даже он будет работать.

Есть ли способ заставить его работать??


person kminny    schedule 14.08.2019    source источник


Ответы (1)


Оберните свой дом другими экранами, которые вы хотите использовать, как показано ниже.

const DrawerNavigator = createDrawerNavigator(
  {
    Home: {
      screen: HomeScreen,
      navigationOptions: () => ({
        header: null
      })
    },
    Settings: {
      screen: SettingsScreen
    }
  },
  DrawerConfig
);

const AppNavigator = createStackNavigator(
  {
    Login: LoginScreen,
    Details: DetailsScreen,
    Home: {
      screen: DrawerNavigator,
      navigationOptions: () => ({
        header: null
      })
    }
  },
  { initialRouteName: "Login", headerMode: "none" }
);
person Jeff Gu Kang    schedule 14.08.2019