React Native 中的侧边栏菜单与反应导航

2023-12-20

我在用react-navigation in React Native我想创建一个侧边栏菜单,它作为从左到右的覆盖层打开,并填充大约 80-90% 的宽度。

如果没有反应导航,这可以通过诸如react-native-side-bar,但我想知道是否可以使用 DrawerNavigator 获得完全相同的功能。

但似乎 DrawerNavigator 有菜单按钮。不是可以自己配置覆盖吗?

Edit

解决方案1

一种方法是使用

const MyStackNavigator = StackNavigator({
  A: { screen: AScreen },
  B: { screen: BScreen },
  C: { screen: CScreen }
});

const RootNavigator = DrawerNavigator({
  A: { screen: MyStackNavigator },
}, {
  // set content of side bar
  contentComponent: (props) => <Sidebar />
});

但随后就可以从所有屏幕拖入抽屉AScreen, BScreen, and CScreen,虽然我只想让它存在AScreen,因为 StackNavigator 嵌套在 DrawerNavigator 中。

解决方案2

另一种解决方案是使用

const MyDrawerNavigator = DrawerNavigator({
  A: { screen: AScreen },
}, {
  // set content of side bar
  contentComponent: (props) => <Sidebar />
});

const RootNavigator = StackNavigator({
  A: { screen: MyDrawerNavigator },
  B: { screen: BScreen },
  C: { screen: CScreen }
});

但随后的标题AScreen将位于顶部,因为 DrawerNavigator 嵌套在A.


我需要您所描述的相同功能,并设法使其与 React 导航一起使用。基本上,我需要一个完全定制的抽屉(侧面菜单)。

这是我的导航器设置:

const MainNavigator = DrawerNavigator({
  Home: {
    screen: StackNavigator({
      Search: {
        screen: SearchScreen
      },
      Result: {
        screen: ResultScreen
      }
    })
  },
  Saved: {
    screen: StackNavigator({
      SavedStack: {
        screen: SavedWordsScreen
      }
    })
  },
  About: {
    screen: StackNavigator({
      AboutStack: {
        screen: AboutScreen
      }
    })
  }
},{
  contentComponent: props => (<Drawer navigation={props.navigation} drawerProps={{...props}} />)
});

如您所见,我创建了一个 Drawer 组件,其中包含我的自定义抽屉内容。这是该组件的基本设置:

import React, { Component } from 'react';
import { ScrollView, View, Text } from 'react-native';
import { Button } from 'react-native-elements';

class Drawer extends Component {
  render() {
    return (
        <View>
            <Button title="Search" onPress={() => this.props.navigation.navigate('Home')} />
            <Button title="Saved" onPress={() => this.props.navigation.navigate('Saved')} />
            <Button title="About" onPress={() => this.props.navigation.navigate('About')} />
        </View>
    );
  }
}

我希望这有帮助。我简化了一些代码以主要显示相关部分,因此如果您有任何后续问题,请提问!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React Native 中的侧边栏菜单与反应导航 的相关文章

随机推荐