Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React native 如何将导航抽屉菜单添加到我的屏幕?_React Native_React Native Android_React Navigation_React Navigation Drawer - Fatal编程技术网

React native 如何将导航抽屉菜单添加到我的屏幕?

React native 如何将导航抽屉菜单添加到我的屏幕?,react-native,react-native-android,react-navigation,react-navigation-drawer,React Native,React Native Android,React Navigation,React Navigation Drawer,我有一个用React Navigation 3.x构建的主屏幕。我有一个标题、一些导航图标和一个底部选项卡菜单。它工作得很好,但现在我想在屏幕上添加一个抽屉菜单,并在右上角添加一个图标来切换抽屉 以下是我的主屏幕App.js的简化版本: import { createStackNavigator, createAppContainer, createBottomTabNavigator } from 'react-navigation'; import Activity1 from './Act

我有一个用React Navigation 3.x构建的主屏幕。我有一个标题、一些导航图标和一个底部选项卡菜单。它工作得很好,但现在我想在屏幕上添加一个抽屉菜单,并在右上角添加一个图标来切换抽屉

以下是我的主屏幕App.js的简化版本:

import { createStackNavigator, createAppContainer, createBottomTabNavigator } from 'react-navigation';
import Activity1 from './Activity/Activity1';
import Activity2 from './Activity/Activity2';
import Activity3 from './Activity/Activity3';
import Calendar from './Screens/Calendar';
import Graph from './Screens/Graph';
import DrawerMenu from './components/DrawerMenu';

class HomeScreen extends React.Component {
   static navigationOptions = {
      title: 'Home',
      headerRight: (<Button onPress={() => this.props.navigation.toggleDrawer()} title='Menu' />)
    };

    render() {
       return (
          <View style={styles.container}>
             <View style={styles.iconContainer}>
                <Icon name='icon1' onPress={this.navToActivity1} />
                <Icon name='icon2' onPress={this.navToActivity2} />
                <Icon name='icon3' onPress={this.navToActivity3} />
             </View>
             <View>
                <DrawerMenu />
             </View>
          </View>
       );
    }
}

//create my main navigation stacks here 
const Home = createStackNavigator({
   HomeScreen,
   Activity1,
   Activity2,
   Activity3,
});

//The following two are for the bottom tab bar only
const Calendar = createStackNavigator({ Calendar });
const Graph = createStackNavigator({ Graph });

const BottomTabNav = createBottomTabNavigator({
    Home, Calendar, Graph
});

export default createAppContainer(TabNavigator);
我无法让抽屉工作。当我点击主屏幕右上角的菜单按钮来调用toggleDrawer时,我得到了一个未定义的is not object求值'ae.props.navigation'错误


抽屉也不能用手势激活,所以我想我没有正确添加它。我做错了什么?谢谢

将软件包安装到本机抽屉中

光盘

您是否在此处安装了check installation?我验证了手势处理程序已安装并链接。我还跟踪了您的链接,并将import语句和override方法添加到Android MainActivity.java中。不幸的是,这并没有产生任何影响。
import { Dimensions } from 'react-native';
import { createDrawerNavigator, createAppContainer } from 'react-navigation';
import Settings from './Settings';
import Profile from './Profile';

const SCREENWIDTH = Dimensions.get('window').width;

const DrawerConfig = {
  drawerWidth: SCREENWIDTH * 0.5,
  drawerPosition: 'right',
};

const DrawerMenu = createDrawerNavigator({
       Settings: { screen: Settings },
       Profile: { screen: Profile },
   },
   DrawerConfig
);

export default createAppContainer(DrawerMenu);
<Drawer
    type="overlay"
    ref={ref => (this._drawer = ref)}
    content={<Sidebar />}
    tapToClose={true}
    openDrawerOffset={0.2} // 20% gap on the right side of drawer
    panCloseMask={0.2}
    closedDrawerOffset={-3}
    styles={drawerStyles}
    tweenHandler={ratio => ({ main: { opacity: (2 - ratio) / 2 } })}
  >