反应原生,侧边菜单没有出现

Posted

技术标签:

【中文标题】反应原生,侧边菜单没有出现【英文标题】:React native, Side menu not coming up 【发布时间】:2019-01-16 15:32:58 【问题描述】:

我遵循了本教程https://codeburst.io/custom-drawer-using-react-navigation-80abbab489f7。当我在模拟器上运行时,我得到了这个错误:

Invariant Violation:此导航器缺少导航道具。在 react-navigation 3 你必须直接设置你的应用容器

然后我更改了这段代码:

export default createDrawerNavigator(
  Home: 
    screen: Home
  ,
  Settings: 
    screen: Settings
  ,
, 
  contentComponent: SideMenu,
  drawerWidth: 300
);

const Nav = createDrawerNavigator(
  Home: 
    screen: Home
  ,
  Settings: 
    screen: Settings
  ,
, 
  contentComponent: SideMenu,
  drawerWidth: 300
);
const Routes = createAppContainer(Nav);
export default Routes;

然后应用程序开始工作,但是当我点击

<Button onPress=() => this.props.navigation.navigate('DrawerOpen') title="Settings"/>

什么都没有发生(也没有错误)。我很困惑

更新 如果我使用

<Button onPress=() => this.props.navigation.openDrawer() title="Settings"/>

我明白了

undefined 不是函数(评估 '_this.props.navigation.openDrawer()') 新闻 C:\react\cash\src\Home.js:9:8 可触摸的HandlePress C:\react\cash\node_modules\react-native\Libraries\Components\Touchable\TouchableNativeFeedback.android.js:196:11 _performSideEffectsForTransition C:\react\cash\node_modules\react-native\Libraries\Components\Touchable\Touchable.js:316:23 _receiveSignal C:\react\cash\node_modules\react-native\Libraries\Components\Touchable\Touchable.js:723:34 touchableHandleResponderRelease C:\react\cash\node_modules\react-native\Libraries\Components\Touchable\Touchable.js:452:17 调用GuardedCallbackImpl C:\react\cash\node_modules\react-native\Libraries\Renderer\oss\ReactNativeRenderer-dev.js:99 调用GuardedCallback C:\react\cash\node_modules\react-native\Libraries\Renderer\oss\ReactNativeRenderer-dev.js:343:16 调用GuardedCallbackAndCatchFirstError C:\react\cash\node_modules\react-native\Libraries\Renderer\oss\ReactNativeRenderer-dev.js:346:6 执行调度 C:\react\cash\node_modules\react-native\Libraries\Renderer\oss\ReactNativeRenderer-dev.js:724:32 executeDispatchesInOrderexecuteDispatchesAndRelease C:\react\cash\node_modules\react-native\Libraries\Renderer\oss\ReactNativeRenderer-dev.js:892 执行DispatchesAndReleaseTopLevelforEachAccumulated C:\react\cash\node_modules\react-native\Libraries\Renderer\oss\ReactNativeRenderer-dev.js:884:14 runEventsInBatch C:\react\cash\node_modules\react-native\Libraries\Renderer\oss\ReactNativeRenderer-dev.js:1066:15 运行ExtractedEventsInBatch C:\react\cash\node_modules\react-native\Libraries\Renderer\oss\ReactNativeRenderer-dev.js:1078 C:\react\cash\node_modules\react-native\Libraries\Renderer\oss\ReactNativeRenderer-dev.js:2726:1 批量更新$1 C:\react\cash\node_modules\react-native\Libraries\Renderer\oss\ReactNativeRenderer-dev.js:17302:5 批量更新 C:\react\cash\node_modules\react-native\Libraries\Renderer\oss\ReactNativeRenderer-dev.js:2622:6 _receiveRootNodeIDEvent C:\react\cash\node_modules\react-native\Libraries\Renderer\oss\ReactNativeRenderer-dev.js:2725:2 接收触摸 C:\react\cash\node_modules\react-native\Libraries\Renderer\oss\ReactNativeRenderer-dev.js:2788:21 __callFunction__guardcallFunctionReturnFlushedQueue

【问题讨论】:

【参考方案1】:

您遵循的教程可能已经过时,并且可能使用的是 2.x 版本的 React-navigation。

他们改变了打开抽屉的方式:

this.props.navigation.openDrawer()

在this part of the doc,你可以找到你想要的。

【讨论】:

以上是关于反应原生,侧边菜单没有出现的主要内容,如果未能解决你的问题,请参考以下文章

使用 react-native 抽屉实现侧边栏/汉堡菜单

React 原生响应式侧边菜单

无法在我的侧边栏中展开菜单项以做出反应

如何在swift 4中消失没有按钮的侧边菜单

如何创建像 pinterest 这样的长按菜单? [反应原生]

每当我更改 selenium + java 的缩放时,侧边菜单都不会出现