0

I created createDrawerNavigator. But when call "props.navigation.dispatch(DrawerActions.openDrawer())" nothing show. Here is my code.

MenuNavigator.js

import { createDrawerNavigator } from "react-navigation";
import Login from "../screens/auth/Login"
import ForgotPassword from "../screens/auth/ForgotPassword"
import SignUp from "../screens/auth/SignUp";


const MenuNavigator = createDrawerNavigator({
  //Drawer Optons and indexing
  ForgotPassword: ForgotPassword,
  SignUp: SignUp,
},
  {
    contentOptions: {
      activeTintColor: '#e91e63',
    },
  }
);
export default MenuNavigator;

AppNavigator

import { createStackNavigator, createAppContainer } from "react-navigation";
import StackNavigatorMain from "./StackNavigatorMain"
import MenuNavigator from "./MenuNavigator"


const AppNavigator =  createStackNavigator(
  {
    StackNavigatorMain: StackNavigatorMain,
    MenuNavigator: MenuNavigator
  },
  {
    headerMode: "none",
    navigationOptions: {
      headerVisible: false
    },
    initialRouteName: "StackNavigatorMain"
  }
);

export default createAppContainer(AppNavigator);

Call openDrawer

onLoginClicked = () => {
    props.navigation.dispatch(DrawerActions.openDrawer());
}

2 Answers2

0

AFAIK Opening drawer from React-navigation v3 is called like this piece of code

this.props.navigation.openDrawer();

EDIT: I tried to minimally replicate this using react-navigation v3 https://snack.expo.io/@keysl183/basic-drawer-v3

keysl
  • 2,127
  • 1
  • 12
  • 16
0

First get the reference of the navigator from top level component like this:

const AppContainer = createAppContainer(AppNavigator);

return <AppContainer ref={navigatorRef => Navigation.setTopLevelNavigator(navigatorRef)} />;

In Navigation.js file you need to set a global variable for navigator reference :

let _navigator;

function setTopLevelNavigator(navigatorRef) {
    _navigator = navigatorRef;
}

Then create function there like this:

function openDrawer() {
    _navigator.dispatch(DrawerActions.openDrawer())
}

Do not forget to import them:

import { DrawerActions } from 'react-navigation';

After that export them from Navigation.js file:

export default {
    setTopLevelNavigator,
    openDrawer,
}