Uncaught Error: undefined is not an object (evaluating 'Y.props.navigation') touchableHandlePress@[native code]

Uncaught Error: undefined is not an object (evaluating 'Y.props.navigation') touchableHandlePress@[native code]

我要在 react-navigation header 中添加一个 drawerMenuButton 来打开抽屉菜单。

图标显示正常,但按下时returns报错。

import React from 'react';
import { View, Dimensions } from 'react-native';
import { Button, Icon } from 'native-base';
import { createAppContainer, createStackNavigator, createDrawerNavigator } from 'react-navigation';
...

const DrawerConfig = {
  drawerWidth: Dimensions.get('window').width * 0.75,
  contentComponent: ({ navigation }) => {
    return(<MenuDrawer navigation={navigation} />)
  }
}

const HomeNavigator = createStackNavigator ({
...
}, {
  defaultNavigationOptions: ({ navigation }) => {
    return {
      headerTitleStyle: {
        fontWeight: 'bold'
      },
      headerLeft: (
        <Button transparent onPress={() => this.props.navigation.toggleDrawer()}>
          <Icon name='menu' style={{color: '#FFF'}} />
        </Button>
      ),
      headerRight: (
        <HomeIcon navigation={navigation} />
      ),
      headerStyle: {
        backgroundColor: '#b80003'
      },
      headerTintColor: '#FFF'
    }
  }
});

const DrawerNavigator = createDrawerNavigator (
  {
    'Principal': {
      screen: HomeNavigator
    },
    'Sobre o Aplicativo': {
      screen: InformationApp
    },
    'Sobre os Responsáveis': {
      screen: Team
    },
    'Sobre o Projeto': {
      screen: Project
    },
    'Política e Termos': {
      screen: Policy
    }
  },
  DrawerConfig
);

const AppDrawerContainer = createAppContainer(DrawerNavigator);

export default AppDrawerContainer;

重要的是要注意,对于属于 const DrawerNavigator = createDrawerNavigator 的屏幕,我使用上面相同的代码来呈现 drawerMenuButton 并且它工作正常,错误仅发生在 const screens HomeNavigator = createStackNavigator.

像这样更改您的代码

onPress={() => navigation.toggleDrawer()}>