React Native Navigation Open Draw From Header 按钮

React Native Navigation Open Draw From Header Button

我正在尝试从堆栈导航 header 按钮打开导航绘图。 header 按钮显示正常,但当我单击该按钮时,我得到

undefined is not an object (evaluating '_this.props.navigate')

我似乎无法找到一个具体的例子来说明如何做到这一点,或者它是否可以通过 React 导航实现。

import React, { Component } from 'react';
import { createStackNavigator, NavigationActions } from 'react-navigation'
import Icon from 'react-native-vector-icons/MaterialCommunityIcons';
import { Draw } from './DrawNav.js'

export const RootStack = createStackNavigator (
  {
    DrawNav: {
      screen: Draw,
      navigationOptions: ({ navigation }) => ({
        //Hide the shadow of the header
        headerStyle: {
          elevation:0,
          shadowColor: 'transparent',
          shadowRadius: 0,
          shadowOffset: {
            height: 0,
          }
        },
        headerLeft: (
          <View style={{marginLeft: 10}}>
            <Icon
              name="menu"
              size={25}
              color="#D4AF37"
              onPress={() => this.props.navigation.openDrawer()}
            />
          </View>
        ),
      })
    },
  },
);

this.props 仅用于反应 class。我假设您使用的是 react-navigation v2,那么您应该像下面那样发送 DrawerAction

import React, { Component } from 'react';
import { createStackNavigator, NavigationActions } from 'react-navigation'
import Icon from 'react-native-vector-icons/MaterialCommunityIcons';
import { DrawerActions } from 'react-navigation';
import { Draw } from './DrawNav.js'

  export const RootStack = createStackNavigator (
  {
    DrawNav: {
      screen: Draw,
      navigationOptions: ({ navigation }) => ({
        //Hide the shadow of the header
        headerStyle: {
          elevation:0,
          shadowColor: 'transparent',
          shadowRadius: 0,
          shadowOffset: {
            height: 0,
          }
        },
        headerLeft: (
          <View style={{marginLeft: 10}}>
            <Icon
              name="menu"
              size={25}
              color="#D4AF37"
              onPress={() => navigation.dispatch(DrawerActions.openDrawer())}
            />
          </View>
        ),
      })
    },
  },
);