【问题标题】:Cannot navigate to route from within navigation stack.无法从导航堆栈中导航到路由。
【发布时间】:2018-11-09 09:47:51
【问题描述】:

我有一个包含整个导航堆栈的文件。在我的导航标题中,我有一个菜单,我想打开一个抽屉。现在在这个例子中我得到了错误:Cannot read property 'navigation' of undefined

我的 AppNavigation 文件:

import React from 'react';
import { Text } from 'react-native';
import { createStackNavigator, createDrawerNavigator } from 'react-navigation';
import  Login from '../components/Login';
import Dashboard from '../components/Dashboard';
import NewNotification from '../components/NewNotification';


const GuestStack = createStackNavigator(
  {
    loginScreen: { screen: Login },
  }, { 
    headerMode: 'float',
    headerLayoutPreset: 'center',
    navigationOptions: {
      headerStyle: { backgroundColor: '#61b1cd' },
      title: 'Welcome',
      headerTintColor: 'black',
    },
  },
);

const LoggedinStack = createDrawerNavigator({
  dashboard: { screen: Dashboard },
  newNotifciation: { screen: NewNotification },
});

const LoggedinNavigation = createStackNavigator(
  {
    LoggedinStack: { screen: LoggedinStack },
  }, {
    headerMode: 'float',
    navigationOptions: {
      headerStyle: { backgroundColor: '#61b1cd' },
      title: 'Welkom!',
      headerTintColor: 'black',
      headerLeft: <Text onPress = { () =>
        this.props.navigation.openDrawer('dashboard')
//  navigation.openDrawer('dashboard')
       }>Menu</Text>,
    },
  },
);

const VveNavigator = createStackNavigator(
  {
    guestStack: {
      screen: GuestStack,
    },
    loggedinStack: {
      screen: LoggedinNavigation,
    },
  }, {
    headerMode: 'none',
    initialRouteName: 'guestStack',
  },
);

export default AppNavigator;

问题似乎到此为止了:

headerLeft: <Text onPress = { () =>
            this.props.navigation.openDrawer('dashboard')
    //  navigation.openDrawer('dashboard')
           }>Menu</Text>,

然后在我的 App.js 中有

export default class App extends React.Component {
  render() {
    return (
      <APPNavigator />
    );
  }
}

react navigation 的版本是 2.18.1

谢谢

【问题讨论】:

    标签: react-native react-navigation react-navigation-drawer


    【解决方案1】:

    headerLeft 没有收到navigation 属性(检查source code)。因此,如果您想在按下时使用导航道具,您应该考虑重构您的堆栈导航器配置:

    const LoggedinNavigation = createStackNavigator(
      {
        LoggedinStack: { screen: LoggedinStack },
      }, {
        headerMode: 'float',
        navigationOptions: ({ navigation }) => ({ // here you get the navigation
          headerStyle: { backgroundColor: '#61b1cd' },
          title: 'Welkom!',
          headerTintColor: 'black',
          headerLeft: (
            <Text
              onPress={() => {
                navigation.openDrawer()
              }}
            >
              Menu
            </Text>
          ),
        }),
      },
    );
    

    查看this issue 了解更多选项。

    【讨论】:

    • 感谢您的评论。有了这个错误就消失了。但是抽屉打不开。
    • 我自己解决了这个问题:navigation.openDrawer();感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 2020-09-03
    • 2017-02-05
    • 2020-12-02
    • 1970-01-01
    • 2019-10-08
    • 1970-01-01
    • 1970-01-01
    • 2020-01-28
    相关资源
    最近更新 更多