React-Native DrawerNavigator没有显示

时间:2019-03-28 04:39:25

标签: react-native expo

我正在尝试创建简单的DrawerNavigator。却没有出现:(

import React, { Component } from 'react';
import { Text } from 'react-native';
import { createAppContainer, createDrawerNavigator } from 'react-navigation';

class One extends Component {
    render() {
        return (<Text>One</Text>);
    }
}

class Two extends Component {
    render() {
        return (<Text>Two</Text>);
    }
}

const DrawerStack = createDrawerNavigator(
    {
        One: {screen: One},
        Two: {screen: Two},
    }, {
    }
);

const App = createAppContainer(DrawerStack);
export default App;

这就是我看到的(没有显示抽屉导航):

no drawer navigator

3 个答案:

答案 0 :(得分:1)

  1. 从左侧滑动,您将看到抽屉导航功能

  2. 默认情况下,react-navigation createDrawerNavigator不提供堆栈导航,如果要查看带有菜单图标的标题,则必须使屏幕(一两个)成为stackNavigation。

    NB:从expo或react-native-icons导入图标

已更新::使用基于本地的

  1. 安装本机基础(** npm install native-base --save **)
  2. 从本机库导入标题,图标,容器,左侧,内容

    Class One扩展了组件{

    render() {
        return (
              <Container>
                  <Header>
                    <Left>
                      <Icon name="md-menu" onPress={() => this.props.navigation.openDrawer()} />
                    </Left>
                  </Header>
    
                  <Content>
                    <Text>Screen One</Text>
                  </Content>
              </Container>
          );
    }
    

    }

    第二类扩展了组件{

    render() {
         return (
              <Container>
                  <Header>
                    <Left>
                      <Icon name="md-menu" onPress={() => this.props.navigation.openDrawer()} />
                    </Left>
                  </Header>
    
                  <Content>
                    <Text>Screen Two</Text>
                  </Content>
              </Container>
          );
    }
    

    }

    const DrawerStack = createDrawerNavigator(   {      一个:{screen:One},      两个:{screen:两个}   },{

    } );

Drawer Screen One Screen Two

答案 1 :(得分:1)

抽屉滑动手势不起作用,因为在新版本的React Navigation v3 npm中。我们需要分别安装react-native-gesture-handler npm。他们创建了单独的npm包,用于触摸和手势处理和识别。

第1步。

npm i react-native-gesture-handler

第2步。

react-native link react-native-gesture-handler

第3步(可选)

如果第2步无法正常工作,则代码配置正确

要完成Android的react-native-gesture-handler的安装,请确保对MainActivity.java进行必要的修改:

package com.reactnavigation.example;

import com.facebook.react.ReactActivity;
+ import com.facebook.react.ReactActivityDelegate;
+ import com.facebook.react.ReactRootView;
+ import com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView;

public class MainActivity extends ReactActivity {

  @Override
  protected String getMainComponentName() {
    return "Example";
  }

+  @Override
+  protected ReactActivityDelegate createReactActivityDelegate() {
+    return new ReactActivityDelegate(this, getMainComponentName()) {
+      @Override
+      protected ReactRootView createRootView() {
+       return new RNGestureHandlerEnabledRootView(MainActivity.this);
+      }
+    };
+  }
}

iOS不需要其他步骤。

请参阅以下文档以获取更多信息:-

  1. https://reactnavigation.org/docs/en/getting-started.html#installation

  2. https://www.npmjs.com/package/react-native-gesture-handler/v/1.0.0-alpha.34?activeTab=readme

  3. https://kmagiera.github.io/react-native-gesture-handler/docs/getting-started.html

答案 2 :(得分:0)

利用本机基础很好。

相关链接为here.

导航链接为here.

您还可以在此处看到该组件,以便可以使用所需的功能。

抽屉导航example.js:

import React, { Component } from "react";
import HomeScreen from "./HomeScreen.js";
import MainScreenNavigator from "../ChatScreen/index.js";
import Profile from "../ProfileScreen/index.js";
import SideBar from "../SideBar/SideBar.js";
import { DrawerNavigator } from "react-navigation";
const HomeScreenRouter = DrawerNavigator(
  {
    Home: { screen: HomeScreen },
    Chat: { screen: MainScreenNavigator },
    Profile: { screen: Profile }
  },
  {
    contentComponent: props => <SideBar {...props} />
  }
);
export default HomeScreenRouter;

enter image description here

易于操作,无需特殊实施。

如果还有其他意见,请发表评论。 如果我的回答是好的,请做出选择。