【问题标题】:Create a navigation drawer inside a Router component defined inside react-native-router-flux在 react-native-router-flux 中定义的 Router 组件内创建导航抽屉
【发布时间】:2020-08-10 00:05:19
【问题描述】:

我正在尝试使用“react-native-router-flux”库组件创建如下所示的导航抽屉:

我也想要这样的“汉堡”菜单图标:

我浏览了多个 stackoverflow 问题和其他文章,但找不到创建此抽屉的方法。我能够显示汉堡菜单图标,但无法创建具有多个选项的抽屉。

我的代码:

const navBarButton = () => {
    return(
      <TouchableOpacity onPress={() => Actions.refresh({ key: 'scene2', open: true })}>
        <Icon 
            name='three-bars' 
            size={30} 
            color='#000' 
            onPress={() => Actions.aboutUs()}
            />
      </TouchableOpacity>
    );
}const Routes = () => {
    
    return(
    <Router renderLeftButton={navBarButton}>

        <Scene key ="root">
            <Scene key = "scene1" title = "scene1" component = { scene1 } initial = {true} />
            <Scene key = "scene2" title = "scene2"  component = { scene2 } />
        </Scene>

    </Router>
    );
}
export default Routes;

我还需要创建哪些组件以及如何将它们与现有代码集成以创建导航抽屉?

==============更新代码=========

import SideMenu from 'react-native-side-menu';
import Home from './components/Home';
import AboutUs from './components/AboutUs';
import {Scene, Actions , Drawer, Stack} from 'react-native-router-flux';

export default function NavigationDrawer() {
  return (
    <Drawer
          hideNavBar = {true}
          key="drawerMenu"
          contentComponent={SideMenu}
          drawerWidth={300}
          drawerPosition="left"
          drawerIcon={
            <TouchableOpacity onPress={() => Actions.refresh({ key: 'home', open: true })}>
                <Icon 
                name='three-bars' 
                size={30} 
                color='#000' 
                onPress={() => navigation.dispatch(DrawerActions.openDrawer())}
                />
            </TouchableOpacity>
            }
        >
          <Stack key="mainContainer">
            <Scene
              key="home"
              component={Home}
              title="Home"
              navigationBarStyle={{
                backgroundColor: "black"
              }}
              navBarButtonColor={"blue"}
            />
            <Scene
              key="aboutUs"
              component={AboutUs}
              title="AboutUs"
              navigationBarStyle={{
                backgroundColor: "black"
              }}
              navBarButtonColor={"blue"}
            />
          </Stack>
        </Drawer>
  );
}

【问题讨论】:

  • react-native-router-flux 的最新生产版本使用 React Navigation 4.x,因此遵循 React Navigation docs for drawer navigation 应该是安全的。
  • 但是这个库不会给我导航菜单的汉堡图标,对吧?
  • 添加图标查看react-native-vector-icons
  • 不是我的意思,我应该在哪里添加汉堡图标的组件以使其在所有屏幕上可见?我现在指的是这段代码:rb.gy/0lcepe

标签: react-native navigation-drawer react-native-router-flux


【解决方案1】:

这是 react-native-router-flux 中 Drawer 的实现。

        <Drawer
          hideNavBar
          key="drawerMenu"
          contentComponent={SideMenu}
          drawerWidth={300}
          drawerPosition="left"
          drawerIcon={<DrawerIcon />}
        >
          <Stack key="mainContainer">
            <Scene
              key="homeScreen"
              component={HomeScreen}
              title="Home"
              navigationBarStyle={{
                backgroundColor: TABS_BACKGROUND_COLOR
              }}
              navBarButtonColor={MAIN_BACKGROUND_COLOR}
            />
            <Scene
              key="societiesScreen"
              component={SocietiesScreen}
              title="Societies"
              navigationBarStyle={{
                backgroundColor: TABS_BACKGROUND_COLOR
              }}
              navBarButtonColor={MAIN_BACKGROUND_COLOR}
            />
            ...
          </Stack>
        </Drawer>

这是打开抽屉的功能。

_showDrawer  = () => {
    return () => {
            Actions.refresh({key: 'drawerMenu', open: true });
};

【讨论】:

  • 嘿,我在使用您的代码实现的问题中编辑了上面的代码,但我什么也没得到。屏幕是空白的。
猜你喜欢
  • 2016-12-22
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多