如何在React Native v.5(不是v.4)中嵌套多个导航器

法多芬

我是新来的本地人。我试图在App.js中嵌套多个导航。我已经成功地嵌套在StackNavigatorBottomTabNavigation 0问题林通过设置它们的初始线路零部件到等于之前的导航链接,这些导航仪。我试图在其中添加DrawerNavigation,但一直收到错误。我所有的代码都在1个文件(App.js)中。我将如何处理?

堆栈导航器

const navigator = createStackNavigator(
{
    Home: {
        screen: HomeScreen,
        navigationOptions: {
            headerShown: false,
        },
    },
    Favs: {
        screen: CrossingScreen,
        navigationOptions: {
            title: 'News',
            headerTitleStyle: {
                color: 'white',
            },
            headerStyle: {
                backgroundColor: 'red',
            },
            headerBackTitle: null,
            headerTintColor: 'white',
        },
    },
},
{
    initialRouteName: 'Home',
    headerMode: 'screen',
})

底部标签导航器

const TabNavigator = createMaterialBottomTabNavigator(
{
    Home: {
        screen: navigator,
        navigationOptions: {
            tabBarLabel: 'Home',
            tabBarIcon: ({ tintColor }) => (
                <View>
                    <Icon
                        style={[{ color: tintColor }]}
                        size={25}
                        name={'train'}
                    />
                </View>
            ),
        },
    },
    FavScreen: {
        screen: FavScreen,
        navigationOptions: {
            tabBarLabel: 'Favorites',
            tabBarIcon: ({ tintColor }) => (
                <View>
                    <Icon
                        style={[{ color: tintColor }]}
                        size={28}
                        name={'star'}
                    />
                </View>
            ),
            activeColor: '#f60c0d',
            inactiveColor: '#f65a22',

            barStyle: { backgroundColor: '#f69b31' },
        },
    },
    MapScreen: {
        screen: MapScreen,
        navigationOptions: {
            tabBarLabel: 'Map',
            tabBarIcon: ({ tintColor }) => (
                <View>
                    <Icon
                        style={[{ color: tintColor }]}
                        size={25}
                        name={'map'}
                    />
                </View>
            ),
            activeColor: '#615af6',
            inactiveColor: '#46f6d7',
            barStyle: { backgroundColor: '#67baf6' },
        },
    },
    Cart: {
        screen: CartScreen,
        navigationOptions: {
            tabBarLabel: 'Feedback',
            tabBarIcon: ({ tintColor }) => (
                <View>
                    <Icon
                        style={[{ color: tintColor }]}
                        size={25}
                        name={'mail'}
                    />
                </View>
            ),
        },
    },
    Cart2: {
        screen: CartScreen,
        navigationOptions: {
            tabBarLabel: 'Add',
            tabBarIcon: ({ tintColor }) => (
                <View>
                    <Icon
                        style={[{ color: tintColor }]}
                        size={25}
                        name={'add'}
                    />
                </View>
            ),
        },
    },
},

{
    initialRouteName: 'Home',
    activeColor: '#f0edf6',
    inactiveColor: '#226557',
    barStyle: { backgroundColor: '#3BAD87' },
})

抽屉导航器

const DrawerNav = createDrawerNavigator(
{
    Page1: {
        screen: TabNavigator,
    },
    Page2: {
        screen: FavScreen,
    },
    Page3: {
        screen: MapScreen,
    },
},
{
    contentComponent: SideMenu,
    drawerWidth: 300,
})

将其导出到App.js中的应用容器中

export default createAppContainer(DrawerNav)

**错误:**

看起来我正在使用不推荐使用的东西吗?

法多芬

我通过仔细阅读[ https://reactnavigation.org/docs/upgrading-from-4.x][1]解决了我的问题

导航API在v4.0和v5.0之间进行了重大更改

这就是您将StackNavigator和MaterialBottomTabNavigatior嵌套在Drawer Navigator中的方法

如果您使用常规的BottomTabNavigatior,则实现相同

const Tab = createMaterialBottomTabNavigator()
const Stack = createStackNavigator()
const Drawer = createDrawerNavigator()

export default class App extends Component {
    //ALL NAVIGATION STACKS IN 1 CONTAINER
    render() {
        return (
            <NavigationContainer>
                <Drawer.Navigator initialRouteName="Home">
                    <Drawer.Screen name="Home" component={MyStack} />
                </Drawer.Navigator>
            </NavigationContainer>
        )
    }
}

const MyStack = () => {
    return (
        <Stack.Navigator>
            <Stack.Screen
                name="Home"
                component={BottomNav}
                options={{
                    headerShown: false,
                }}
            />
            <Stack.Screen name="Crossing" component={CrossingScreen} />
        </Stack.Navigator>
    )
}
const BottomNav = () => {
    return (
        <Tab.Navigator initialRouteName="Home">
            <Tab.Screen
                name="Home"
                component={HomeScreen}
                options={{
                    tabBarIcon: ({ tintColor }) => (
                        <View>
                            <Icon
                                style={[{ color: tintColor }]}
                                size={28}
                                name={'train'}
                            />
                        </View>
                    ),
                }}
            />
            <Tab.Screen
                name="Favorites"
                component={FavScreen}
                options={{
                    tabBarIcon: ({ tintColor }) => (
                        <View>
                            <Icon
                                style={[{ color: tintColor }]}
                                size={28}
                                name={'star'}
                            />
                        </View>
                    ),
                }}
            />
            <Tab.Screen
                name="Map"
                component={MapScreen}
                options={{
                    tabBarIcon: ({ tintColor }) => (
                        <View>
                            <Icon
                                style={[{ color: tintColor }]}
                                size={28}
                                name={'map'}
                            />
                        </View>
                    ),
                }}
            />
            <Tab.Screen
                name="Feedback"
                component={ContactScreen}
                options={{
                    tabBarIcon: ({ tintColor }) => (
                        <View>
                            <Icon
                                style={[{ color: tintColor }]}
                                size={28}
                                name={'mail'}
                            />
                        </View>
                    ),
                }}
            />
            <Tab.Screen
                name="Add"
                component={AddScreen}
                options={{
                    tabBarIcon: ({ tintColor }) => (
                        <View>
                            <Icon
                                style={[{ color: tintColor }]}
                                size={28}
                                name={'add'}
                            />
                        </View>
                    ),
                }}
            />
        </Tab.Navigator>
    )
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在React Native v.5中离开某个屏幕时,如何隐藏底部的标签导航器?

来自分类Dev

如何将数据从类传递给React Native数组,firebase,堆栈导航器v5中的函数

来自分类Dev

如何在React Native Navigation V5的标签栏中隐藏标签?

来自分类Dev

如何重置嵌套导航器(react-navigation v5)

来自分类Dev

Redux 中的 React-native 嵌套导航器

来自分类Dev

嵌套在堆栈导航器中的React Native选项卡导航器

来自分类Dev

如何在React Native导航器中禁用向后滑动

来自分类Dev

如何在 react-native-navigation v2 中向我的 sideMenu 添加图标?

来自分类Dev

我如何在React Native中制作面包屑/显示屏幕路径(我正在使用React Navigation v5)

来自分类Dev

如何在React Navigation v5中重置状态?

来自分类Dev

如何使用React Navigation v.5中的DrawerItemList在抽屉式导航器中传递自定义按钮?

来自分类Dev

如何在react-navigation v5中同时呈现Tab导航和Drawer导航

来自分类Dev

如何在react-navigation v5中从单个屏幕隐藏堆栈导航标题

来自分类Dev

在react-navigation v5中使用嵌套导航时如何编写类型定义

来自分类Dev

使用createDrawerNavigator v5刷新React-Native屏幕导航

来自分类Dev

标题标题不会随着底部导航而改变React Native Navigation v5

来自分类Dev

如何在React Navigation v4中处理未初始化的导航ref?

来自分类Dev

将StackNavigator从v4转换为v5 React Native错误以进行身份验证

来自分类Dev

如何在React Native中使用抽屉导航器?

来自分类Dev

React-Native Navigation v5:如何在特定屏幕上更改tabBarLabel或tabBarIcon以及选项卡的colorBackground?

来自分类Dev

如何在React Native导航器中禁用向后滑动手势

来自分类Dev

如何在React Native中将组件正确导入到我的导航器中?

来自分类Dev

如何在React Native导航器中禁用向后滑动手势

来自分类Dev

如何在 React Native 中不使用堆栈导航器重定向到页面?

来自分类Dev

如何在 react-native-navigation 中向导航器添加背景图像

来自分类Dev

嵌套在Stack Navigation v5中的React Native Tab-更新标头的最佳实践

来自分类Dev

React-Native-标签导航器嵌套在抽屉内

来自分类Dev

React Native - 无法在单个文件中定义多个堆叠导航器

来自分类Dev

ScrollView 中的 React Native v0.42 flexbox 错误

Related 相关文章

  1. 1

    在React Native v.5中离开某个屏幕时,如何隐藏底部的标签导航器?

  2. 2

    如何将数据从类传递给React Native数组,firebase,堆栈导航器v5中的函数

  3. 3

    如何在React Native Navigation V5的标签栏中隐藏标签?

  4. 4

    如何重置嵌套导航器(react-navigation v5)

  5. 5

    Redux 中的 React-native 嵌套导航器

  6. 6

    嵌套在堆栈导航器中的React Native选项卡导航器

  7. 7

    如何在React Native导航器中禁用向后滑动

  8. 8

    如何在 react-native-navigation v2 中向我的 sideMenu 添加图标?

  9. 9

    我如何在React Native中制作面包屑/显示屏幕路径(我正在使用React Navigation v5)

  10. 10

    如何在React Navigation v5中重置状态?

  11. 11

    如何使用React Navigation v.5中的DrawerItemList在抽屉式导航器中传递自定义按钮?

  12. 12

    如何在react-navigation v5中同时呈现Tab导航和Drawer导航

  13. 13

    如何在react-navigation v5中从单个屏幕隐藏堆栈导航标题

  14. 14

    在react-navigation v5中使用嵌套导航时如何编写类型定义

  15. 15

    使用createDrawerNavigator v5刷新React-Native屏幕导航

  16. 16

    标题标题不会随着底部导航而改变React Native Navigation v5

  17. 17

    如何在React Navigation v4中处理未初始化的导航ref?

  18. 18

    将StackNavigator从v4转换为v5 React Native错误以进行身份验证

  19. 19

    如何在React Native中使用抽屉导航器?

  20. 20

    React-Native Navigation v5:如何在特定屏幕上更改tabBarLabel或tabBarIcon以及选项卡的colorBackground?

  21. 21

    如何在React Native导航器中禁用向后滑动手势

  22. 22

    如何在React Native中将组件正确导入到我的导航器中?

  23. 23

    如何在React Native导航器中禁用向后滑动手势

  24. 24

    如何在 React Native 中不使用堆栈导航器重定向到页面?

  25. 25

    如何在 react-native-navigation 中向导航器添加背景图像

  26. 26

    嵌套在Stack Navigation v5中的React Native Tab-更新标头的最佳实践

  27. 27

    React-Native-标签导航器嵌套在抽屉内

  28. 28

    React Native - 无法在单个文件中定义多个堆叠导航器

  29. 29

    ScrollView 中的 React Native v0.42 flexbox 错误

热门标签

归档