Реагировать на встроенную навигацию Открыть Draw From Header Button - PullRequest
0 голосов
/ 21 мая 2018

Я пытаюсь открыть навигационный чертеж из кнопки заголовка стека навигации.Кнопка заголовка отображается нормально, но когда я нажимаю кнопку, я получаю

undefined не является объектом (оценивается как _this.props.navigate ')

Iне могу найти надежного примера того, как это сделать, или, если возможно, с помощью реагирующей навигации.

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 голосов
/ 21 мая 2018

this.props используется только в классе реакции.Я предполагаю, что вы используете response-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>
        ),
      })
    },
  },
);
...