如何在 React Native Navigation wix V1 中单击时关闭抽屉

Posted

技术标签:

【中文标题】如何在 React Native Navigation wix V1 中单击时关闭抽屉【英文标题】:How to close drawer on click in React Native Navigation wix V1 【发布时间】:2019-03-01 10:25:15 【问题描述】:

我正在使用来自 Wix [V1] 的 react native 0.56.0 和 React Native Navigation。在 React 本机导航中,有一个启用抽屉的选项。现在,如果用户在抽屉菜单中选择某个选项或在抽屉外单击,则可以关闭抽屉,但我想在单击 X 按钮时关闭抽屉。有没有人找到办法做到这一点?

【问题讨论】:

你用的是v1还是v2的哪个版本? 我使用的是 v1 1.1.476 【参考方案1】:

试试这个。真棒

import AppRegistry from 'react-native';
import App from './App';
import name as appName from './app.json';
import  gestureHandlerRootHOC  from 'react-native-gesture-handler'

AppRegistry.registerComponent(appName, () => gestureHandlerRootHOC(App));

【讨论】:

【参考方案2】:

在自定义抽屉中,props.navigation 中已经有一个名为 closeDrawer 的函数。

您的关闭按钮将如下所示:

<TouchableOpacity
  onPress=props.navigation.closeDrawer
  style=styles.closeButton
>
 <Image source=Images.close />
</TouchableOpacity>

这里有更多的代码来说明上下文:

在 App.js 中

import  createDrawerNavigator  from "@react-navigation/drawer";
import DrawerScreen from "./src/screens/DrawerScreen";

const Drawer = createDrawerNavigator();

function LeftDrawerStack() 
  return (
    <Drawer.Navigator 
      drawerContent=(props) => <DrawerScreen ...props 
    /> 
    >
      <Drawer.Screen name="Menu item 1" component=ProfileScreen />
      <Stack.Screen name="Menu item 2") component=PaymentScreen />
    </Drawer.Navigator>
  );

在 DrawerScreen.js 中

import React from "react";
import TouchableOpacity, View, Image, Text from 'react-native';
import 
  DrawerContentScrollView,
  DrawerItemList,
  DrawerItem,
 from '@react-navigation/drawer';
import styles from './styles/DrawerScreenStyle';


function DrawerScreen(props) 
  return (
    <DrawerContentScrollView style=styles.container ...props>
      <View style=styles.drawerHeader>  
        <TouchableOpacity
          onPress=props.navigation.closeDrawer
          style=styles.closeButton
        >
          <Image source=Images.close />
        </TouchableOpacity>
      </View>
      <DrawerItemList ...props />
    </DrawerContentScrollView>
  );


export default DrawerScreen;

【讨论】:

closeDrawer是一个函数,所以需要props.navigation.closeDrawer();【参考方案3】:

这对我有用:

this.props.navigator.toggleDrawer(
    side: 'right',
    animated: true,
    to: 'closed',
);

【讨论】:

我会尝试并让你知道它是否有效。谢谢你的帮助

以上是关于如何在 React Native Navigation wix V1 中单击时关闭抽屉的主要内容,如果未能解决你的问题,请参考以下文章

React-Native + crypto:如何在 React-Native 中生成 HMAC?

React-native:如何在 React-native 中使用(和翻译)带有 jsx 的 typescript .tsx 文件?

如何在 React Native 中使用 React Native Video 显示多个视频? [关闭]

如何在React Native上创建多个屏幕?

如何在React Native中使用CreateBottomTabNavigator?

如何在 React Native 中的循环中查找