首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React -本机导航抽屉导航嵌套导航

React -本机导航抽屉导航嵌套导航
EN

Stack Overflow用户
提问于 2017-07-08 04:00:56
回答 3查看 3K关注 0票数 4

目前,在我正在构建的react原生应用程序中,我有一个包含两个屏幕的抽屉导航器。对于导航,我使用的是react-导航。https://reactnavigation.org/docs/intro/

代码如下:

代码语言:javascript
复制
import { DrawerNavigator } from 'react-navigation'
export  default drawernav = DrawerNavigator(
     {
        Login: {Screen: Login},
        Main : {Screen: Main }
     }
) 

虽然Login是在一个抽屉导航器中,我希望它使登录屏幕不具有抽屉导航功能,但主屏幕有登录和主作为两个选项在抽屉导航器中。但是,现在登录屏幕也有抽屉导航器。有没有办法让Login折叠式导航功能消失?

EN

回答 3

Stack Overflow用户

发布于 2018-09-29 15:50:04

请参考下面的帖子,它是非常有用的。https://github.com/react-navigation/react-navigation/issues/131。有许多方法被提出。kyaroru提供了一个完整的工作示例,如下所示:https://github.com/kyaroru/ReactNavDrawer

下面是一个更简单的示例:

app.js

代码语言:javascript
复制
import React from 'react';
import { createStackNavigator , createDrawerNavigator } from 'react-navigation';
import LoginScreen from './LoginScreen';
import SignupScreen from './SignupScreen';
import HomeScreen from './HomeScreen';
import DrawerButton from './DrawerButton';
import SettingScreen from './SettingScreen';

const StackNavigator = createStackNavigator ({

  Login: {
    screen: LoginScreen,
  },

  Signup: {
    screen: SignupScreen,
  },  

  Home: {
    screen: HomeScreen,
  },

  Sitting: {
    screen: SettingScreen,
  },    

}, 
{
      navigationOptions: ({navigation}) => ({
        headerLeft: <DrawerButton navigation={navigation} />,
      }),
}
);

const DrawerNavigator = createDrawerNavigator({
  Menu: {
     screen: StackNavigator,
  },

  Signup: {
    screen: SignupScreen,
  },  

  Sitting: {
    screen: SettingScreen,
  },  

});

export default DrawerNavigator;

DrawerButton.js

代码语言:javascript
复制
import React from 'react';
import { TouchableOpacity, Platform } from 'react-native';
import Ionicons from 'react-native-vector-icons/Ionicons';
import PropTypes from 'prop-types';


const DrawerButton = ({ navigation }) => (
  <TouchableOpacity
    onPress={() => navigation.openDrawer()}
  >
    <Ionicons name={Platform.OS === 'ios' ? 'ios-menu' : 'md-menu'} size={28}  />
  </TouchableOpacity>
);


DrawerButton.propTypes = {
  navigation: PropTypes.object.isRequired,
};

export default DrawerButton;
票数 1
EN

Stack Overflow用户

发布于 2017-10-08 03:43:07

你需要改变你的导航结构。根目录应该是一个包含LoginScreenDrawerNavigatorStackNavigatorDrawerNavigator中的屏幕可能是StackNavigator%s。这些StackNavigator%s将包含带有您的代码的屏幕组件。

票数 0
EN

Stack Overflow用户

发布于 2018-09-29 20:24:32

由于您不想让这个抽屉出现在登录屏幕中,因此请使用以下流程

代码语言:javascript
复制
import { DrawerNavigator, createStackNavigator } from 'react-navigation'
const drawernav = DrawerNavigator(
     {
        Main : {Screen: Main }
     }
);

const stack = createStackNavigator(
    {
      Login: {Screen: Login},
      drawer: {screen: drawernav},
    }
);

export default stack;

将来你想要添加屏幕,如果屏幕需要抽屉,那么屏幕必须放在抽屉导航器中,而不需要抽屉的屏幕应该放在堆栈导航器中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44978798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档