当前位置: 首页 > article >正文

react native 实现自定义底部导航与路由文件配置

首先先把需要的一些库引入

yarn install @react-navigation/native
yarn install react-native-screens react-native-safe-area-context
yarn install @react-navigation/native-stack
yarn add @react-navigation/bottom-tabs

 创建路由文件及四个底部导航页面

router文件下的bottomTab.jsx

这个文件主要就是app的底部导航配置

import {createBottomTabNavigator} from '@react-navigation/bottom-tabs';
import { Image} from 'react-native';
//  引入自定义图片
import Home from '../views/home/index';
import User from '../views/user/index';
import Parking from '../views/parking/index';
import Detail from '../views/detail/index';

const Tab = createBottomTabNavigator();
export default function TabBar() {
  return (
    <Tab.Navigator
      screenOptions={({route}) => ({
        tabBarIcon: ({focused}) => {
          let iconName;
           // 自定义图标
          if (route.name === '首页') {
            iconName = focused ? require('../assets/icon/bottom/sy_seleted.png') : require('../assets/icon/bottom/sy.png');
          }else if(route.name === '车位'){
            iconName = focused ? require('../assets/icon/bottom/zcw_seleted.png') : require('../assets/icon/bottom/zcw.png');
          }else if(route.name === '订单'){
            iconName = focused ? require('../assets/icon/bottom/dd_seleted.png') : require('../assets/icon/bottom/dd.png');
          }else{
            iconName = focused ? require('../assets/icon/bottom/wd_seleted.png') : require('../assets/icon/bottom/wd.png');
          }
          return <Image source={iconName}></Image>;
        },
      })}>
       // options={{headerShown: false}} 这个是  是否展示顶部导航 
      <Tab.Screen name="首1页" component={Home}  options={{headerShown: false}}/>
      <Tab.Screen name="车位" component={Parking} />
      <Tab.Screen name="订单" component={Detail} />
      <Tab.Screen name="我的" component={User} />
    </Tab.Navigator>
  );
}

router文件下的index.jsx

这里面就是存放项目中路由的地方

import React from 'react';
import {createNativeStackNavigator} from '@react-navigation/native-stack';
import BottomTabBar from './bottomTab'; // 引入底部TAB栏
import Setting from '../views/setting/index'; 
const Stack = createNativeStackNavigator();
// stack路由配置
export default function Navigation() {
  return (
    <Stack.Navigator>
      // 把底部导航栏引入
      <Stack.Screen
        name={'Navigation'}
        component={BottomTabBar}
      />
      //  这里存放项目页面路由
      //  至于里面的配置 你们可以可以搜一下去按照自己项目需求去配置
      <Stack.Screen
        name={'Setting'}
        options={{
          title: '设置',
          headerStyle: {
            backgroundColor: 'black',
          },
          headerTintColor: '#fff',
          headerTitleStyle: {
            fontWeight: 'bold',
          },
        }}
        component={Setting}
      />
    </Stack.Navigator>
  );
}

最后在app.jsx中引入即可


import React from 'react';
import {View, Text} from 'react-native';

import {NavigationContainer} from '@react-navigation/native';

import Navigation from './src/router';


const App = () => {
  return (
  
    <NavigationContainer>
      <Navigation />
    </NavigationContainer>
  );
};
export default App;

这个可以直接赋值粘贴只需要把文件创建一下即可

下面是文件目录


http://www.kler.cn/a/272789.html

相关文章:

  • 面试经验分享-回忆版某小公司
  • 【狂热算法篇】探秘图论之 Floyd 算法:解锁最短路径的神秘密码(通俗易懂版)
  • Vue.js组件开发-实现后端返回二进制文件在浏览器自动下载
  • 无公网IP 实现外网访问本地 Docker 部署 Navidrome
  • Conda的一些常用命令
  • 【Git 】探索 Git 的魔法——git am 与补丁文件的故事
  • HBase常用命令
  • Matlab|【免费】基于半不变量的概率潮流计算
  • Web 开发模式演进过程
  • 如何在webapp中手动部署
  • 蚓链助新零售企业快速实现数字化转型
  • Python使用 k 均值对遥感图像进行语义分割
  • PHP 生成图片
  • 自然语言处理实验2 字符级RNN分类实验
  • 电子科技大学链时代工作室招新题C语言部分---题号D
  • 数据表示—二进制与十进制转换
  • goland设置保存文件时不将4个空格转为TAB
  • AI实景无人自动直播间怎么搭建?三步教你轻松使用
  • 安卓面试网络知识基础 51-55
  • 从资金管理的角度谈谈个人怎样交易现货白银
  • 代码随想录算法训练营第二十五天 | 216.组合总和III 17.电话号码的字母组合
  • 数据分析 任务3
  • Axure 中继器的Repeater属性的使用
  • Device Tree (四) - device_node -> platform_device
  • 部署高斯喷射项目gaussian-splatting
  • NetSuite多脚本性能研究