uniapp+uview-plus实现微信小程序自定义tabbar

news/2025/1/15 20:04:50/

参考文档

微信小程序相关开发文档链接:https://developers.weixin.qq.com/miniprogram/dev/framework/ability/custom-tabbar.html
虽然是uniapp框架但是实现方式和原生小程序相似

实现思路

1、app.json里面tabBar添加配置 custom:true,其他和非自定义设置一样
2、在components文件夹里添加Tabbar组件
3、在对应的页面里引用Tabbar组件

pages.json 配置代码

{"tabBar": {"custom": true, //必写"color": "#000000",   //color,selectedColor,backgroundColor可不写"selectedColor": "#000000", //tab选中颜色"backgroundColor": "#000000","list": [{ //每个tab对应的路由路径"pagePath": "page/index/index",//此处page前面未加/"text": "首页"}, {"pagePath": "page/index/order","text": "订单"},{"pagePath": "page/index/myUser","text": "我的"},]},
}

Tabbar组件代码

HTML代码

<template><u-tabbar :value="activeIndex" fixed activeColor="#11C0D7" inactiveColor="#8C8C8C"><u-tabbar-itemv-for="(item, index) in tabList":text="item.text":key="index":border="false"@click="tabBarChange(item.pagePath, index)"><template #active-icon><image class="u-page__item__slot-icon" :src="item.selectedIconPath"></image></template><template #inactive-icon><image class="u-page__item__slot-icon" :src="item.iconPath"></image></template></u-tabbar-item></u-tabbar>
</template>

JS代码

<script setup lang="ts">
import { onShow } from '@dcloudio/uni-app'
import { ref } from 'vue'
const tabList = ref([{pagePath: 'index',text: '首页',iconPath: '../../static/images/index.png', //本地图片selectedIconPath: '../../static/images/index_select.png'},{pagePath: 'order',text: '订单',iconPath: '../../static/images/order.png',selectedIconPath: '../../static/images/order_select.png'},{pagePath: 'myUser',text: '我的',iconPath: '../../static/images/user.png',selectedIconPath: '../../static/images/user_select.png'}
])
const activeIndex = ref(0) //当前选中项
onShow(() => {getActiveIndex()
})// 自定义tab组件监听页面路径选中下标
const getActiveIndex = () => {const pages = getCurrentPages()let page = pages[pages.length - 1]tabList.value.forEach((item: any, index: number) => {if (`pages/index/${item.pagePath}` == page.route) {activeIndex.value = index}})
}function tabBarChange(url: string, index: number) {uni.switchTab({url})
}
</script>

在页面中引入

<!-- 每个tabbar对应的路由页面,page最好添加 padding-bottom:calc(env(safe-area-inset-bottom) + 24rpx + 50px); 50是设置的tabbar的高度,24是留余的页面空白 --><template><TabBar />
</template>
<script setup lang="ts">import TabBar from '@/components/Tabbar/index.vue'</script>

http://www.ppmy.cn/news/1525985.html

相关文章

在Flask中实现跨域请求(CORS)

在Flask中实现跨域请求&#xff08;CORS&#xff0c;Cross-Origin Resource Sharing&#xff09;主要涉及到对Flask应用的配置&#xff0c;以允许来自不同源的请求访问服务器上的资源。以下是在Flask中实现CORS的详细步骤和方法&#xff1a; 一、理解CORS CORS是一种机制&…

C++笔记20•数据结构:哈希(Hash)•

哈希 1.无序的关联式容器&#xff08;unordered_map&unordered_set&#xff09; unordered_map与unordered_set几乎与map与set是一样的&#xff0c;只是性能unordered_map与unordered_set比map与set更优一些。还有就是unordered_map与unordered_set是无序的&#xff0c;…

前端深拷贝

什么是 structuredClone()&#xff1f; structuredClone() 是 2022 年引入的全局函数&#xff0c;支持深度克隆 JavaScript 对象。与 JSON.stringify() 和 JSON.parse() 等传统方法不同&#xff0c;它们难以处理复杂的结构和循环引用&#xff0c;而 structuredClone() 可以毫不…

C到C++入门基础知识

一&#xff1a;命名空间&#xff1a;namespace &#xff08;一&#xff09;&#xff1a;命名空间的定义 注&#xff1a;命名空间只能定义在全局&#xff0c;不能定义在函数内部。 &#xff08;1&#xff09;类似于C语言的结构体&#xff0c;C语言的命名空间定义为&#xff1…

【React】React18.2.0核心源码解读

前言 本文使用 React18.2.0 的源码&#xff0c;如果想回退到某一版本执行git checkout tags/v18.2.0即可。如果打开源码发现js文件报ts类型错误请看本人另一篇文章&#xff1a;VsCode查看React源码全是类型报错如何解决。 阅读源码的过程&#xff1a; 下载源码 观察 package…

Docker 数据目录迁移:一篇详细的技术指南

在使用Docker进行容器化部署时,有时我们需要将Docker的数据目录(默认位于/var/lib/docker)迁移到新的位置。这可能是由于磁盘空间不足、存储优化或系统迁移等原因。本文将详细介绍如何将Docker数据目录迁移到新的目录下,包括所有必要的步骤和代码实现。 一、背景知识 Doc…

数据结构————二叉树基础知识(零基础包会的!)

今天带来数据结构二叉树的知识&#xff0c;保证大家不会离散数学或者没有数据结构基础&#xff0c;也能明明白白的。 一&#xff0c;树 1&#xff0c;树的结构 我们在了解什么是二叉树之前我们先了解下什么是树&#xff0c;树是一种非线性的数据结构&#xff0c;它是由n个节点…

Kafka 命令详解及使用示例

文章目录 Kafka 命令详解及使用示例Kafka 命令详解kafka-topics.sh&#xff1a;主题管理创建主题创建带副本的主题修改主题分区数了解分区分布列出主题查看主题详情删除主题 kafka-console-producer.sh&#xff1a;消息生产者发送消息到主题带键值对的消息消息生产性能优化带分…