RN实现tabbar

这篇博客介绍了如何在React Native中结合使用@react-navigation/bottom-tabs和@react-navigation/stack来创建底部TabNavigator和StackNavigator导航。通过示例代码展示了如何配置底部导航栏图标,切换不同页面,并自定义头部navbar组件Logo。
摘要由CSDN通过智能技术生成

组件准备

@react-navigation/native
@react-navigation/stack
@react-navigation/bottom-tabs
react-native-vector-icons/Ionicons

核心代码

import React, {Component} from 'react';

import {NavigationContainer} from "@react-navigation/native";
import {createStackNavigator} from "@react-navigation/stack";
import {createBottomTabNavigator} from "@react-navigation/bottom-tabs";
import Ionicons from "react-native-vector-icons/Ionicons";
import HomePage from "./pages/Home";
import ListPage from "./pages/List";
import DetailPage from "./pages/Detail";
import Logo from "./components/Logo/index"
function BottonTab () {
    const Tab = createBottomTabNavigator();
    return (
        <Tab.Navigator
            screenOptions={({route}) => ({
                tabBarIcon: ({focused, color, size}) => {
                    let iconName;
                    switch (route.name){
                        case "首页":
                            iconName = "ios-home";
                            break;
                        case "列表":
                            iconName = "ios-list";
                            break;
                    }
                    return (
                        <Ionicons
                            name={iconName}
                            color={color}
                            size={size}
                        />
                    )
                }
            })}
            tabBarOptions={{
                activeTintColor: "#23b8ff",
                inactiveTintColor: "#999999"
            }}
        >
            <Tab.Screen
                name="首页"
                component={HomePage}
            />
            <Tab.Screen
                name="列表"
                component={ListPage}
            />
        </Tab.Navigator>
    )
}

class Txclass extends Component {
    constructor(props){
        super(props);
    }
    render(){
       const Stack = createStackNavigator();
        return (
            <NavigationContainer>
                <Stack.Navigator>
                    <Stack.Screen
                        name="Tab"
                        component={BottonTab}
                        options={{
                            headerTitle: props => <Logo {...props}/>
                        }}
                    />
                    <Stack.Screen
                        name="Detail"
                        component={DetailPage}
                        options={{
                            headerTitle: props => <Logo {...props}/>,
                            headerBackTitle: "返回"
                        }}
                    />
                </Stack.Navigator>
            </NavigationContainer>
        )
    }
}
export default Txclass;

Logo 为头部navbar组件
createStackNavigator 是创建导航路由

最终效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值