uniapp中tabBar菜单栏的实现以及页面常用的生命周期(菜单栏颜色切换)

本文介绍如何使用uniapp实现tab菜单栏的切换,并详细解释页面中的常用生命周期,如onLoad、onShow和onHide等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

本篇文章带大家使用uniapp通过小案例实现tab菜单栏的切换,并对页面中常用的生命周期进行介绍。

实现菜单栏的切换

配置page页面

我们这里要实现三个页面的切换,所以要先在page.json文件中配置三个页面的路径

"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
	{
		"path": "pages/index/index",
		"style": {
			"navigationBarTitleText": "uni-app"
		}
	},
	{
		"path": "pages/video/video",
		"style": {
			"navigationBarTitleText": "uni-app"
		}
	},
	{
		"path": "pages/mine/mine",
		"style": {
			"navigationBarTitleText": "uni-app"
		}
	}
],

配置tabBar菜单栏

首先我们要在在page.json文件中对tabBar进行配置:
主要的属性及注释如下,对其进行我们想实现效果的设置,在list中配置了三个对象代表三个tab栏,iconPath代表未选择的图片,selectIconPath是选中之后的图片,这里需要在本地有相应的tab图

"tabBar": {
	"color":"#888", // 颜色
	"selectedColor":"#ff2419", // 选中的颜色
	"borderStyle":"white", // 边框颜色
	"backgroundColor":"#f9f9f9", // 背景颜色
	"list": [
		{
			"pagePath":"pages/index/index",
			"iconPath":"static/tab/t_1.png", 
			"selectedIconPath":"static/tab/t_11.png",
			"text":"首页"
		},
		{
			"pagePath":"pages/video/video",
			"iconPath":"static/tab/t_2.png",
			"selectedIconPath":"static/tab/t_21.png",
			"text":"视频"
		},
		{
			"pagePath":"pages/mine/mine",
			"iconPath":"static/tab/t_3.png",
			"selectedIconPath":"static/tab/t_31.png",
			"text":"我的"
		}
	]
}

这样我们就完成了菜单栏的配置,效果如下:
在这里插入图片描述

页面常用的生命周期

  1. onLoad:监听页面加载,其参数为上个页面传递的数据,参数类型为 Object(用于页面传参)
  2. onShow:监听页面显示。页面每次出现在屏幕上都触发,包括从下级页面点返回露出当前页面
  3. onHide:监听页面隐藏
    代码示例:
<script>
	export default {
		data() {
			return {
				title: 'Hello'
			}
		},
		onLoad() {
			console.log("index load")
		},
		onShow() {
			console.log("index show")
		},
		onHide() {
			console.log("index hide")
		}
	}
</script>

index页面打开的时候会执行以生命周期:
在这里插入图片描述
切换到其它页面,就会执行index页面的onHide:
在这里插入图片描述

最后

本文的分享就到这里啦,本专栏会继续给大家带来uniapp的基础知识,后续也会有项目的实战的内容,感兴趣可以关注一波~

### 关于 UniAppTabBar 切换时触发事件 在 UniApp 开发过程中,当涉及到 TabBar切换操作并希望在此类交互发生时触发特定逻辑或方法调用,可以利用 `onShow` 生命周期钩子来实现这一需求。每当页面显示时都会触发此生命周期函数,在多页应用中尤其有用。 对于 TabBar 页面之间的跳转而言,每次新的 Tab 被选中后对应的页面会重新加载或是从前端路由栈恢复出来,此时该页面的 `onShow` 将会被执行[^1]。 下面是一个简单的例子展示如何监听 TabBar 切换: #### 父级页面 (TabBar 组件) ```javascript // pages/tabBar/index.js export default { onLoad() {}, onShow() { console.log('当前页面已显示'); }, }; ``` 如果需要更细粒度地控制不同 TabItem 之间转换的行为,则可以在各个独立的 Tab 对应的小程序页面内分别定义各自的处理逻辑;也可以通过全局状态管理工具如 Vuex 来共享数据和行为模式,从而更好地协调多个视图间的互动关系。 另外一种方式是在 App.vue 或者 main.js 中设置一个通用处理器用于捕获所有页面级别的 `onShow` 和其他可能影响到整体用户体验的状态变化。 #### 使用自定义事件机制 除了上述基于页面生命周期的方式外,还可以考虑采用类似于引用中的父子组件间通信方案——即借助框架提供的 API 实现页面的消息传递功能。不过这种方法相对复杂一些,并且通常只适用于较为特殊的应用场景下。 例如,若要模仿类似效果,可在目标页面初始化阶段订阅来自导航栏发出的通知消息,而在实际点击某个标签项之前先发布相应的通知给所有已经注册过的观察者对象。 ```html <!-- 假设这是其中一个 tab 页面 --> <template> <view @tap="handleTap">Home</view> </template> <script> import { getCurrentPages, getApp } from '@uni/apis'; export default { data() { return {}; }, methods: { handleTap() { const appInstance = getApp(); // 发布事件至父级或其他指定接收方 appInstance.$emit('tab-switched', { name: 'home' }); } } } </script> ``` 以上两种策略都可以有效地帮助开发者捕捉到用户选择不同底部菜单选项的动作,并据此作出响应性的调整动作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Beiyux

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值