【问题标题】:Can't open Drawer react native无法打开抽屉反应原生
【发布时间】:2019-09-03 04:49:37
【问题描述】:

我创建了 createDrawerNavigator。但是当调用“props.navigation.dispatch(DrawerActions.openDrawer())”时什么也没显示。这是我的代码。

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);

调用 openDrawer

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

【问题讨论】:

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


    【解决方案1】:

    首先从顶级组件中获取导航器的引用,如下所示:

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

    Navigation.js 文件中,您需要为导航器参考设置一个全局变量:

    let _navigator;
    
    function setTopLevelNavigator(navigatorRef) {
        _navigator = navigatorRef;
    }
    

    然后像这样在那里创建函数:

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

    不要忘记导入它们:

    import { DrawerActions } from 'react-navigation';
    

    然后从Navigation.js 文件中导出它们:

    export default {
        setTopLevelNavigator,
        openDrawer,
    }
    

    【讨论】:

      【解决方案2】:

      AFAIK 从 React-navigation v3 打开抽屉就像这段代码一样调用

      this.props.navigation.openDrawer();
      

      编辑: 我尝试使用 react-navigation v3 最低限度地复制它 https://snack.expo.io/@keysl183/basic-drawer-v3

      【讨论】:

      • 返回错误:“this.props.navigation.openDrawer() 不是函数”
      • 如何调用 onLoginClicked ?也可以分享一下吗?
      • 只是一个 onPress 按钮
      • 你在标题上调用它吗?还是在屏幕组件中?
      • 我调用屏幕组件
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-28
      • 1970-01-01
      相关资源
      最近更新 更多