Uniapp+Vue3 使用父传子方法实现自定义tabBar

一、流程介绍

代码编写顺序

  • 第一步:pages.json配置tabbar并配置custom配置项
  • 第二步:编写自定义tabbar组件的静态代码(最好使用v-for去写,仿照原生tabbar逻辑)
  • 第三步:各tabbar页面调用tabbar组件,并传入tabbar索引值
  • 第四步:tabbar组件接受传入的值,通过传入索引值判断高亮对象,点击另外的tabbar图标时跳转到相应页面

页面执行顺序

  • 第一步:跳转到新的tabbar页面,该组件中的数据重置
  • 第二步:tabbar页面向组件传入索引并保存在currentIndex中
  • 第三步:v-show判断相应tabbar图标高亮
  • 第四步:点击新的tabbar,执行handleItemClick操作,跳转到新的tabbar页面(回到第一步)

二、代码

在page.json中定义tabbar

在page.json中定义tabbar并将custom设置为true

启用自定义tabbar的配置,可以将默认的tabbar隐藏

仍然使用uniapp默认的tabbar定义方式是为了防止跳转过程中页面栈无限增长

// 用户操作路径: 学习页 → navigateTo 情绪页 → navigateTo 研友页 // 页面栈:[学习, 情绪, 研友] ← 越来越长! // 用户连续点击tab 10次: // 页面栈会有10个页面!内存占用高,容易崩溃 
在这里插入图片描述

创建自定义tabbar组件

创建一个tabBarList数组(与page.json中tabBar中的list相同的结构),然后使用v-for去写更好。
本案例中选中状态是为图标加上高亮色块,且各个tabbar图标宽高都不相同,所以并没有采用这种写法

<scriptsetup>import{ref}from"vue"const tabBarList =ref([{"pagePath":"pages/study/study","text":"学习"},{"pagePath":"pages/mood/mood","text":"情绪"},{"pagePath":"pages/friend/friend","text":"研友"},{"pagePath":"pages/AI/AI","text":"芯研"},{"pagePath":"pages/my/my","text":"我的"}])</script><template><viewclass="container"><viewclass="item"@click="handleItemClick(0)"><imagesrc="@/static/tabBar/学习.png"style="width: 62rpx;height: 52rpx;z-index:9999;"/><view>学习</view><viewclass="circle"></view></view> ... </view></template><stylelang="scss"scoped>.container{width:100%;position:fixed !important;bottom: 0rpx;display:flex;justify-content: space-evenly;padding-bottom:40rpx;padding-top:20rpx;background-color: white;z-index: 99999;.item{display:flex;flex-direction: column;gap:10rpx;align-items: center;width: 50rpx;font-size: 19rpx;font-weight: 500;position:relative;.circle{position:absolute;top:-10rpx;left:10rpx;width: 50rpx;height: 50rpx;background:rgba(255, 219, 217, 0.54);border-radius: 50%;}}}</style>

在tabbar页面中使用组件

在tabbar页面中使用组件,并传入页面索引

在这里插入图片描述


在这里插入图片描述

接受传入数据以及选中后高亮、跳转

<scriptsetup>import{ref}from"vue"const props =defineProps({currentIndex:Number }) 跳转相应的tabbar页面 consthandleItemClick=(index)=>{ uni.switchTab({url:'/'+ tabBarList.value[index].pagePath })}const tabBarList =...])</script><template><viewclass="container"><viewclass="item"@click="handleItemClick(0)"><imagesrc="@/static/tabBar/学习.png"style="width: 62rpx;height: 52rpx;z-index:9999;"/><view>学习</view> 展示高亮色块 <viewclass="circle"v-show="props.currentIndex === 0"></view></view> ... </view></template>

Read more

零成本搭建飞书机器人:手把手教你用Webhook实现高效消息推送

1. 为什么你需要一个飞书机器人? 在日常工作中,我们经常需要处理各种通知需求。比如系统报警、任务提醒、审批结果通知等等。传统的解决方案包括短信、邮件或者第三方推送平台,但这些方式要么成本高,要么实时性差。飞书机器人提供了一种零成本、高效率的替代方案。 我去年负责的一个ERP系统升级项目就遇到了这个问题。当时我们需要在关键业务流程节点给不同部门的同事发送实时通知。如果使用短信,按照每天200条计算,一个月就要花费上千元。后来我们改用飞书机器人,不仅完全免费,还能实现更丰富的消息格式和精准的@提醒功能。 飞书机器人本质上是一个自动化程序,它通过Webhook技术接收外部系统的消息,并转发到指定的飞书群聊中。这种机制特别适合企业内部系统与飞书之间的集成,比如: * 运维报警通知 * 审批流程提醒 * 业务系统状态更新 * 日报/周报自动推送 * 数据监控预警 2. 5分钟快速创建你的第一个机器人 创建飞书机器人非常简单,不需要任何开发经验。下面我以电脑端操作为例,手把手带你完成整个过程。 首先打开飞书客户端,进入你想要添加机器人的群聊。点击右上角的"..."菜单,

Windows安装Neo4j保姆级教程(图文详解)

Windows安装Neo4j保姆级教程(图文详解)

文章目录 * 前言 * 系统要求 * 安装Java环境 * 步骤1:检查Java版本 * 步骤2:下载Java JDK * 步骤3:安装Java JDK * 下载Neo4j * 步骤1:访问官方网站下载Neo4j * 步骤2:解压Neo4j * 启动Neo4j服务 * 步骤1:以管理员身份打开命令提示符 * 步骤2:导航到Neo4j的bin目录 * 步骤3:安装Neo4j服务 * 步骤4:启动Neo4j服务 * 步骤5:验证服务状态 * 访问Neo4j * 基本操作和配置 * 常用管理命令 * 配置文件修改 * 常见问题解决 * 问题1:端口被占用 * 问题2:Java版本不匹配 * 问题3:服务启动失败 * 总结 前言 Neo4j是一款强大的图数据库,特别适合处理复杂的关系数据。本教程将手把手教你在Windows系统上安装Neo4j,并配置可视化工具,让你快速上手图数据库的世界。 系统要求 在开始安装之前,请确保你的系统满足以下要求: 操作系统:

【保姆级教程】从零入手:Python + Neo4j 构建你的第一个知识图谱

【保姆级教程】从零入手:Python + Neo4j 构建你的第一个知识图谱

摘要: 大数据时代,数据之间的关系往往比数据本身更有价值。传统的 SQL 数据库在处理复杂关系(如社交网络、推荐系统、风控分析)时显得力不从心,而 知识图谱 和 图数据库 Neo4j 正是为此而生。本文将带你从 0 基础出发,理解知识图谱核心概念,安装 Neo4j 环境,并手把手教你用 Python 代码构建一个生动的人物关系图谱。拒绝枯燥理论,全是实战干货! 一、 什么是知识图谱与 Neo4j? 在动手写代码之前,我们先用大白话把两个核心概念捋清楚。 1. 什么是知识图谱 (Knowledge Graph)? 不要被高大上的名字吓到。知识图谱本质上就是把世界上的事物(节点)和它们之间的联系(关系)画成一张巨大的网。 * Excel 思维: 罗列数据。例如:张三,25岁;李四,

AI绘画不求人:Z-Image Turbo本地部署全攻略,开箱即用

AI绘画不求人:Z-Image Turbo本地部署全攻略,开箱即用 你是不是也经历过这样的时刻:看到一张惊艳的AI插画,立刻打开浏览器搜教程,结果被“CUDA版本冲突”“PyTorch编译失败”“显存不足OOM”这些报错拦在门外?明明只是想画一幅水墨小景,却卡在环境配置第三步,连WebUI的界面都没见着。 别再折腾了。今天这篇不是教你“如何硬刚报错”,而是直接给你一条干净、稳定、真正能跑起来的本地部署路径——专为 Z-Image Turbo 量身定制的 Gradio + Diffusers 极速画板镜像,从下载到出图,全程无需改一行代码、不装一个依赖、不碰一次终端命令。它不是“理论上可行”的方案,而是我亲手在RTX 4060、RTX 3090、甚至16GB显存的MacBook Pro(M3 Max + Metal后端)上反复验证过的“开箱即用”方案。 更关键的是,它解决了国产AI绘画模型落地最头疼的三大痛点:黑图、