React Native Navigation从标题按钮打开绘图

时间:2018-05-21 01:13:03

标签: reactjs react-native react-navigation react-native-navigation

我正在尝试从堆栈导航标题按钮打开导航绘图。标题按钮显示正常,但当我点击按钮时,我正在

  

undefined不是对象(评估'_this.props.navigate')

我似乎无法找到一个如何做到这一点的实例,或者它是否可能通过反应导航。

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>
        ),
      })
    },
  },
);

1 个答案:

答案 0 :(得分:1)

this.props仅用于反应类。我假设您正在使用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>
        ),
      })
    },
  },
);