openDrawer () с экрана дочернего навигатора - PullRequest
0 голосов
/ 10 января 2020

У меня есть следующий собственный код реакции:

import React from 'react';
import {AppRegistry} from 'react-native';
import { createAppContainer } from 'react-navigation';
import { createStackNavigator} from 'react-navigation-stack';
import { createDrawerNavigator} from 'react-navigation-drawer';
import {View,Text,Button} from 'react-native';

class Sub extends React.Component {
  static navigationOptions = {
    headerTitle: () => (
      <Button
        onPress={() => this.props.navigation.dangerouslyGetParent().openDrawer()}
        title="Open Drawer"
      />
    ),
  };
  render() {
      const props = this.props;
      return (
        <View>
        <Text>{props.navigation.state.routeName}</Text>
        <Button onPress={_=>props.navigation.navigate("Sub1")} title="Sub1" />
        <Button onPress={_=>props.navigation.navigate("Sub2")} title="Sub2" />
        </View>
      );
  }
}

const SubRoutes = {
    "Sub1":Sub
};

const SubNavigator = createStackNavigator(SubRoutes);

const SubApp = createAppContainer(SubNavigator);

const MainRoutes = {
    "Main1":SubApp
};

const MainNavigator = createDrawerNavigator(MainRoutes);

const App = createAppContainer(MainNavigator);

AppRegistry.registerComponent("nav", () => App);

Он представляет StackNavigator как дочерний элемент DrawerNavigator. На экране Sub у меня есть кнопка headerTitle с кнопкой, при нажатии которой я хочу открыть меню ящика навигатора ящиков. Прямо сейчас нажатие на кнопку просто дает ошибку, что Sub.props.navigation не существует.

Как заставить меню ящика открываться при нажатии кнопки заголовка заголовка?

1 Ответ

1 голос
/ 10 января 2020

Пожалуйста, измените ваш navigationOptions код на это:

  ...
  static navigationOptions = ({navigation}) => ({
    headerTitle: () => (
      <Button
        onPress={() => navigation.openDrawer()}
        title="Open Drawer"
      />
    )
  });
  ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...