Open the drawer when I click the icon react navigation version 5

安稳与你 提交于 2020-08-10 20:44:46

问题


I want to open the drawer when I click the icon in the headerLeft part, I also have try to this.props.navigation.dispatch but is gives an error also navigation.dispatch gives error

The code below does not gives errors but is does not open the drawer

import { DrawerActions } from '@react-navigation/native';
import { NavigationContainer } from '@react-navigation/native';
import { createDrawerNavigator } from '@react-navigation/drawer';
import { createStackNavigator } from '@react-navigation/stack';
const Drawer = createDrawerNavigator();
const Stack = createStackNavigator();

export default class App extends Component {

  createHomeStack = () =>
    <Stack.Navigator>
      <Stack.Screen
      initialRouteName="login"
      headerMode="screen"
        name="main"
        children={ this.createBottomTabs}
        options={{
          title: "Fitbit",
         headerLeft: () => (

            <Icon
              name="menu"
              size={25}
              color="#D4AF37"
              onPress={() => {DrawerActions.openDrawer()  }}
            />

          )} } />

    </Stack.Navigator>

  createDrawer = ({navigation}) =>

    <Drawer.Navigator initialRouteName="Main" >

      <Drawer.Screen name="Main" component={Main} />
      <Drawer.Screen name="Contacts" component={Food} />>
    </Drawer.Navigator>

  render() {
    return ( 
  <NavigationContainer>
        {this.createHomeStack()}
     </NavigationContainer>

    );
  }
}

回答1:


In order to achieve that you need to wrap the stack into the drawer as the documentation says.

Documentation here

I would probably use something like this:

EDIT: Added full code

import React,{Component} from 'react'
import { NavigationContainer } from '@react-navigation/native'
import { createDrawerNavigator } from '@react-navigation/drawer'
import { createStackNavigator } from '@react-navigation/stack'
import { View } from 'react-native'
import Icon from 'react-native-vector-icons/dist/Feather'
const Drawer = createDrawerNavigator()
const Stack = createStackNavigator()

const Main = () => <View></View>
const Food = () => <View></View>

const Home = ({ navigation }) => (
    <Stack.Navigator>
        <Stack.Screen name="Main" component={Main} options={{
            headerLeft: () => <Icon
                name="menu"
                size={25}
                color="#D4AF37"
                onPress={() => navigation.openDrawer()}
              />
      }} />
    </Stack.Navigator>
)


const DrawerNavigator = () => (
    <Drawer.Navigator initialRouteName="Home">
        <Drawer.Screen name="Home" component={Home} />
        <Drawer.Screen name="Contacts" component={Food} />
      </Drawer.Navigator>
)

export default props => (
    <NavigationContainer>
        <DrawerNavigator />
    </NavigationContainer>
)


来源:https://stackoverflow.com/questions/61425905/open-the-drawer-when-i-click-the-icon-react-navigation-version-5

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!