React-Native DrawerNavigator 两侧菜单
React-Native DrawerNavigator Menu on both sides
我有一个带有 DrawerNavigator 的 React 本机应用程序。对于菜单,我有自己的组件。效果很好。
现在我想在右侧添加第二个侧边菜单。
有没有可能像Slack App里那样有两个DrawerNavigator?
此解决方案对我不起作用:https://snack.expo.io/ry7lYempe
因为我不想将 TabController 作为父级。两个抽屉都应该可以在所有屏幕上访问。
我的代码如下所示:
import React from 'react'
import reducer from './src/reducers'
import { DrawerNavigator } from 'react-navigation';
import SidebarMenu from './src/components/layout/SidebarMenu'
import { createStore } from 'redux';
import { Provider } from 'react-redux';
let store = createStore(reducer);
import News from './src/screens/News'
import HowTo from './src/screens/HowTo'
export default class MyApp extends React.Component {
render() {
return (
<Provider store={store}>
<MainNavigator />
</Provider>
);
}
}
const MainNavigator = DrawerNavigator(
{
News: {
path: '/news',
screen: News
},
HowTo: {
path: '/howto',
screen: HowTo
}
},
{
initialRouteName: 'News',
drawerPosition: 'left',
contentComponent: SidebarMenu
}
);
更新react-navigation到最新版本后解决
你可以添加任何你想要的抽屉,看看这个例子https://snack.expo.io/BJoChzewM
在您的情况下,您可以将 "MainNavigator" 添加到另一个 DrawerNavigator 组件中。不要忘记设置 drawerOpenRoute/drawerCloseRoute 以防止任何副作用。
@KamleshKatpara 这是我的解决方案(我嵌套了两个导航器):
const DrawerExample = DrawerNavigator(
{
Home: {
path: '/',
screen: Home
}
},
{
initialRouteName: 'Home',
drawerPosition: 'left',
contentComponent: SidebarMenu
}
);
const MainDrawerExample = DrawerNavigator({
Drafts: {
screen: DrawerExample,
}
}, {
drawerPosition: 'right',
contentComponent: BookmarkMenu,
drawerOpenRoute: 'DrawerRightOpen',
drawerCloseRoute: 'DrawerRightClose',
drawerToggleRoute: 'DrawerRightToggle'
});
我有一个带有 DrawerNavigator 的 React 本机应用程序。对于菜单,我有自己的组件。效果很好。 现在我想在右侧添加第二个侧边菜单。 有没有可能像Slack App里那样有两个DrawerNavigator? 此解决方案对我不起作用:https://snack.expo.io/ry7lYempe 因为我不想将 TabController 作为父级。两个抽屉都应该可以在所有屏幕上访问。
我的代码如下所示:
import React from 'react'
import reducer from './src/reducers'
import { DrawerNavigator } from 'react-navigation';
import SidebarMenu from './src/components/layout/SidebarMenu'
import { createStore } from 'redux';
import { Provider } from 'react-redux';
let store = createStore(reducer);
import News from './src/screens/News'
import HowTo from './src/screens/HowTo'
export default class MyApp extends React.Component {
render() {
return (
<Provider store={store}>
<MainNavigator />
</Provider>
);
}
}
const MainNavigator = DrawerNavigator(
{
News: {
path: '/news',
screen: News
},
HowTo: {
path: '/howto',
screen: HowTo
}
},
{
initialRouteName: 'News',
drawerPosition: 'left',
contentComponent: SidebarMenu
}
);
更新react-navigation到最新版本后解决
你可以添加任何你想要的抽屉,看看这个例子https://snack.expo.io/BJoChzewM
在您的情况下,您可以将 "MainNavigator" 添加到另一个 DrawerNavigator 组件中。不要忘记设置 drawerOpenRoute/drawerCloseRoute 以防止任何副作用。
@KamleshKatpara 这是我的解决方案(我嵌套了两个导航器):
const DrawerExample = DrawerNavigator(
{
Home: {
path: '/',
screen: Home
}
},
{
initialRouteName: 'Home',
drawerPosition: 'left',
contentComponent: SidebarMenu
}
);
const MainDrawerExample = DrawerNavigator({
Drafts: {
screen: DrawerExample,
}
}, {
drawerPosition: 'right',
contentComponent: BookmarkMenu,
drawerOpenRoute: 'DrawerRightOpen',
drawerCloseRoute: 'DrawerRightClose',
drawerToggleRoute: 'DrawerRightToggle'
});