【发布时间】:2017-10-22 09:54:30
【问题描述】:
我在React Native 中使用react-navigation,我想创建一个侧边栏菜单,它作为从左到右的覆盖打开并填充大约80-90% 的宽度。
如果没有 react-navigation,这可以通过 react-native-side-bar 等软件包实现,但我想知道是否可以使用 DrawerNavigator 获得完全相同的功能。
但 DrawerNavigator 似乎有菜单按钮。不可以自己配置overlay吗?
编辑
解决方案 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 和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 中。
【问题讨论】:
-
您尝试执行的操作与 DrawerNavigator 默认执行的操作有何不同?查看
react-native-side-bar的示例,他们正在做同样的事情。 -
完全一样。问题是如何组织导航器。我用一个例子更新了我的问题
标签: javascript node.js reactjs react-native react-navigation