是否可能带有子页面的反应导航抽屉?

Posted

技术标签:

【中文标题】是否可能带有子页面的反应导航抽屉?【英文标题】:Is possible react-navigation-drawer with subpages? 【发布时间】:2021-03-01 10:39:09 【问题描述】:

我正在使用 react-native 和 react-navigation-drawer 来生成用于导航 beetwen 屏幕的侧边菜单。 我的问题是:是否存在将子页面放入侧边菜单的方法或指南? 欢迎任何建议,并在此先感谢您 左边是我的菜单,右边是我想要的:

【问题讨论】:

【参考方案1】:

您可以使用自定义它

自定义抽屉内容

它有很多选择,请阅读它并非所有项目都需要定制 我刚刚为您快速制作了这个示例

文档

https://reactnavigation.org/docs/drawer-navigator/#providing-a-custom-drawercontent

  import  React from 'react';
import  View, Text,TouchableOpacity  from 'react-native';
import  NavigationContainer  from '@react-navigation/native';
import 
  createDrawerNavigator,
  DrawerContentScrollView,
  DrawerItemList,
  DrawerItem,
 from '@react-navigation/drawer';
import Animated from 'react-native-reanimated';

function Feed() 
  return (
    <View style= flex: 1, justifyContent: 'center', alignItems: 'center' >
      <Text>Feed Screen</Text>
    </View>
  );


function Article() 
  return (
    <View style= flex: 1, justifyContent: 'center', alignItems: 'center' >
      <Text>Article Screen</Text>
    </View>
  );


function CustomDrawerContent( navigation ,progress, ...rest ) 
  const translateX = Animated.interpolate(progress, 
    inputRange: [0, 1],
    outputRange: [-100, 0],
  );
const [isshow,show] = React.useState(false)

  return (
    <DrawerContentScrollView ...rest>
      <Animated.View style= transform: [ translateX ] >
      <TouchableOpacity onPress=()=>show(true)>
      <Text>
      press me
      </Text>
      </TouchableOpacity>
      <View>
      isshow ? (

        <View>
          <TouchableOpacity onPress=()=>navigation.navigate('Feed')>
        <Text> page one 1</Text>
</TouchableOpacity> 
    <TouchableOpacity onPress=()=>navigation.navigate('Article')>
        <Text> page one 2</Text>
</TouchableOpacity> 
</View>

      ):null
      </View>
      </Animated.View>
    </DrawerContentScrollView>
  );


const Drawer = createDrawerNavigator();

function MyDrawer() 
  return (
    <Drawer.Navigator drawerContent=props => <CustomDrawerContent ...props />>
      <Drawer.Screen name="Feed" component=Feed />
      <Drawer.Screen name="Article" component=Article />
    </Drawer.Navigator>
  );


export default function App() 
  return (
    <NavigationContainer>
      <MyDrawer />
    </NavigationContainer>
  );

展览链接

https://snack.expo.io/cXuBvzs87

【讨论】:

以上是关于是否可能带有子页面的反应导航抽屉?的主要内容,如果未能解决你的问题,请参考以下文章

带有活动和子片段的导航抽屉

如何在iphone的子视图页面中创建带有导航返回按钮的导航栏

使用带有布局页面或每页多个组件的 React-Router

带有片段的 Android Studio 导航抽屉。工具栏隐藏在下一个片段活动或页面中

导航抽屉菜单子类别

wordpress 如何在子页面中导航上一页和下一页