uni-app自定义tabbar

2023-11-12

uni-app自定义tabbar

为什么要自定义tabbar呢,虽然说直接在page.json里面直接配置性能可能更好点,但是有时候满足不了我们的需求,比如说,需要鉴权的时候,我们就需要通过不同的用户显示不同的底部

  • 首先page.json里面
    tabbar
    因为做tabbar所以默认的配置项必须注释,只留下跳转的路径即可

接下来就在components 里面创建一个tabbar文件
tabbar.vue

<template>
	<view>
		<view class="uni-tabbar">
		//遍历tabbar
			<view class="uni-tabbar__item" v-for="(item,index) in tabbar" :key="index" @tap="changeTab(item)">
				<view class="uni-tabbar__bd">
					<view class="uni-tabbar__icon">
					//判断tabbar点击过后的图片路径
						<image v-if="item.pagePath == pagePath" class="icon-img" :src="item.selectedIconPath" mode="aspectFit"></image>
						<image v-else class="icon-img" mode="aspectFit" :src="item.iconPath"></image>
					</view>
				</view>
				//判断tabbar点击前后的样式
				<view class="uni-tabbar__label" :class="{'active': item.pagePath == pagePath}">
					{{item.text}}
				</view>
			</view>
		</view>
	</view>
</template>
<script>
	export default {
		props: {
		//从父级继承过来的属性 需要在父级中使用:pagePath='pagePath',
			pagePath: String
		},
		data() {
			return {
				// page: '',
				showPage: false,
				containerHeight: 400,
				//公共的tabbar
				tabbar: [{
						"pagePath": "pages/index/index",
						"iconPath": "/static/index.png",
						"selectedIconPath": "/static/indexSelected.png",
						"text": "首页"
					},
					{
						"pagePath": "pages/order/order",
						"iconPath": "/static/all.png",
						"selectedIconPath": "/static/allSelected.png",
						"text": "订单"
					},{
						"pagePath": "pages/cart/cart",
						"iconPath": "/static/me.png",
						"selectedIconPath": "/static/meSelected.png",
						"text": "我的"
					}
				]
			};
		},
		watch: {
			pagePath: {
				handler(pagePath) {
					console.log('pagePath监听===val', pagePath)
				},
				immediate: true
			}
		},
		mounted() {
			// 根据自己的业务需求判断条件为true,替换即可,根据权限设置的tabbar	
			//第三个参数为插入项,第一个参数为第一项位置,第二个参数为要删除几个。
			if (true) {
				this.tabbar.splice(3, 0, {
						"pagePath": "pages/wareHouse/wareHouse",
						"iconPath": "/static/cart.png",
						"selectedIconPath": "/static/cartSelected.png",
						"text": "出入库"
					}
				)
			}
		},
		methods: {
			changeTab(item) {
				this.page = item.pagePath;
				// 使用reLaunch关闭所有的页面,打开新的栏目页面
				// console.log(item.pagePath)
				// console.log(this.page)
				uni.reLaunch({
					url: '/' + this.page,
				});
			},
		}
	}
</script>
<style lang="scss">
	.uni-tabbar {
		position: fixed;
		bottom: 0;
		left: 0;
		z-index: 999;
		width: 100%;
		display: flex;
		justify-content: space-around;
		height: 100rpx;
		padding: 16rpx 0;
		box-sizing: border-box;
		border-top: solid 1rpx #ccc;
		background-color: #fff;
		box-shadow: 0px 0px 17rpx 1rpx rgba(206, 206, 206, 0.32);

		.uni-tabbar__item {
			display: block;
			line-height: 24rpx;
			font-size: 20rpx;
			text-align: center;
			width: 25%;
		}

		.uni-tabbar__icon {
			height: 24px;
			line-height: 24px;
			text-align: center;
		}

		.icon {
			display: inline-block;
		}

		.uni-tabbar__label {
			line-height: 24rpx;
			font-size: 24rpx;
			color: #999;

			&.active {
				color: #C81816;
			}
		}

		.icon-img {
			height: 24px;
			width: 24px;
		}
	}
</style>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

uni-app自定义tabbar 的相关文章

随机推荐

  • 手把手教你用matlab做深度学习(二)- --CNN

    在上一篇博客中 讲解了怎么用matlab搭建CNN网络模型 并给出了训练过程与结果 但是结果不是很满意 大概训练精度在80 左右 现在给出改进方案 1 首先 我们可以把CNN滤波输出数改大点 从原来的32改为numFilters 128 完
  • 在线图片尺寸修改 生成图标

    https www sojson com image change html https www idc yun com index php icon make 工具机 https www idc yun com index php uti
  • python输出希腊字母

    24个希腊字母 一 希腊字母及读音 二 Python输出 三 发现问题 一 希腊字母及读音 大写 小写 英文读音 中文读音 Alpha 阿尔法 Beta 贝塔 Gamma 伽马 Delta 德尔塔 Epsilon 艾普西隆 Zeta 泽塔
  • R数据分析:方法与案例详解--自学笔记

    TOC 目录 第二章 数据结构与基本运算 2 1 数据类型 数值型 numeric 整数 小数 科学数 字符型 character 夹杂单引号或者双引号之间 MR 逻辑型 只能读取T TRUE 或 F FALSE 值 复数型 a bi 原始
  • Java框架简介

    一 框架介绍 1 SpringBoot SpringBoot是Spring家族中一个全新框架 用来简化Spring应用程序的创建和开发过程 特性 1 一个快速开发框架 能够快速创建基于Spring的应用程序 2 能够直接使用java mai
  • Jenkins管理Docker容器

    一 Docker镜像容器手动更新流程 1 Docker安装 curl o etc yum repos d epel repo http mirrors aliyun com repo epel 7 repo curl o etc yum r
  • ajax的添加,在ajax中添加更多参数

    我正在使用AJAX功能 我使用AJAX将3个变量传递到下一页 当我添加第4个变量时 函数不会被调用 Code Browser Support Code function ajaxFunction var ajaxRequest The va
  • 超大规模数据库集群保稳系列之一:高可用系统

    基于过去多年在大规模数据集群保稳方面的实践经验 我们希望能够跟业界进行一些技术交流 美团技术团队举办了第75期技术沙龙 我们邀请到了美团研究员赵应钢担任出品人 同时请邀请到张洪 王占全 蔺瑞超 沈裕锋等4位数据库方向的4位技术专家 围绕进攻
  • C++虚拟机制的压制

    C 中 如果一个类有虚拟函数的时候 当使用该类的指针调用其虚函数的时候 代码会被编译器转换为使用虚函数表中保存的函数地址找到函数后二次调用 即 class A public virtual void Out this gt Inner vi
  • ue4绘制线的三种方式

    第一种方式 是用样条线 简明扼要 但是打包后就消失了 AActor actor world gt SpawnActor lt AActor gt ActorClass actor gt AttachToActor this FAttachm
  • 步进及伺服调试中常见问题

    步进及伺服调试中常见问题 步进 伺服 步进 1 步进电机驱动器可以接收两种脉冲信号 一种单脉冲方式 一种是双脉冲方式 可通过驱动器拨码开关设置进行选择 试分别画出两种方式的信号图 单脉冲方式脉冲信号从脉冲端 PUL 输入 通过方向端 DIR
  • java实现域名解析

    java实现域名解析 域名解析过程 浏览器检查是否有该域名缓存 检查本机host文件之内是否有该域名对应ip 检查本机DNS缓存 递归或迭代向DNS根域名服务器获取该域名ip地址 1 windows控制台 win r 输入cmd进入控制台
  • C语言常见校验(加密)操作——异或

    在通讯传输数据过程中 往往要加校验码 今天写了个简单的异或以及解异或的操作代码 include
  • arcsde安装步骤_ArcGIS 9.3 安装之 SDE的安装及使用

    由于ArcSDE9 3只支持Oracle 11gR1 32位版本 所以要在安装ArcSDE的电脑上安装一个32位版本的Oracle 11gR1客户端 1 安装SDE程序 并进行注册 1 选择注册机KeyGen exe 点击server标签
  • Vue3中父子组件实现数据双向绑定效果

    父组件
  • MarkDown/README.md文件添加图片

    README md文件添加图片 用MarkDown格式的文档编辑时 需要上传图片 比如往gitHub上的README md中添加一张展示效果图 alt text path to img jpg Title 其中 path to img jp
  • 树莓派设置静态IP记录(整理)

    另外 树莓派直连电脑 设置静态ip 可参考 http blog csdn net liang890319 article details 8639128 树莓派默认使用的是dhcp自动分配ip 而且默认打开SSH服务 当没有显示器的时候 我
  • 面试官:Spring refresh过程是怎样的?

    小熊学Java网站 https javaxiaobear gitee io 每周持续更新干货 建议收藏 1 Spring refresh 流程 refresh 是 AbstractApplicationContext 中的核心方法 负责初始
  • 多模态学习-基于文本和图像信息的商品分类框架

    将文本model和图像model合并为一个model 因为它们包含了互补的信息 对于图像和文本数据 都是用CNN 对图像数据 使用已经在Image Net上训练过的网络 该网络已经具有为自然图像提取丰富特征的能力 利用预先训练的机器学习模型
  • uni-app自定义tabbar

    uni app自定义tabbar 为什么要自定义tabbar呢 虽然说直接在page json里面直接配置性能可能更好点 但是有时候满足不了我们的需求 比如说 需要鉴权的时候 我们就需要通过不同的用户显示不同的底部 首先page json里