【微信小程序-原生开发】实用教程03-自定义底部导航(含自定义tabBar导航高亮需点击两次的解决方案)
创始人
2024-05-13 09:55:53
0

开始前,请先完成底部导航的开发,详见

【微信小程序-原生开发】实用教程02-添加全局页面配置、页面、底部导航
https://sunshinehu.blog.csdn.net/article/details/128705866

显然,纯文字的底部导航有点low,还是需要有图标的才酷,下面我们一起来实现

在这里插入图片描述

1. 修改 tabBar 配置

在 app.json 的 tabBar 配置中新增

    "custom": true,

即启用用户自定义的 tabar,但之前的 list 配置留着,别删 !!!
在这里插入图片描述

2. 添加自定义的 tabBar 代码

在项目目录下新建文件夹 custom-tab-bar (必须是这个名字!)
文件夹中依次创建以下文件

custom-tab-bar\data.js

export default [{icon: 'home',text: '首页',url: 'pages/index/index',},{icon: 'usergroup',text: '家庭成员',url: 'pages/member/index',},{icon: 'tips',text: '圆梦宝典',url: 'pages/bible/index',},{icon: 'user',text: '我的世界',url: 'pages/me/index',},
];

custom-tab-bar\index.js

import TabMenu from './data';
Component({data: {active: 0,list: TabMenu,},methods: {onChange(event) {this.setData({ active: event.detail.value });wx.switchTab({url: this.data.list[event.detail.value].url.startsWith('/')? this.data.list[event.detail.value].url: `/${this.data.list[event.detail.value].url}`,});},init() {const page = getCurrentPages().pop();const route = page ? page.route.split('?')[0] : '';const active = this.data.list.findIndex((item) =>(item.url.startsWith('/') ? item.url.substr(1) : item.url) ===`${route}`,);this.setData({ active });},},
});

custom-tab-bar\index.json

{"component": true,"usingComponents": {"t-tab-bar": "tdesign-miniprogram/tab-bar/tab-bar","t-tab-bar-item": "tdesign-miniprogram/tab-bar/tab-bar-item","t-icon": "tdesign-miniprogram/icon/icon"}
}

custom-tab-bar\index.wxml

{active}}"bindchange="onChange"split="{{false}}"
>{list}}"wx:for-item="item"wx:for-index="index"wx:key="index">{item.icon}}" size="48rpx" />{{ item.text }}

custom-tab-bar\index.wxss

.custom-tab-bar-wrapper {display: flex;flex-direction: column;align-items: center;
}.custom-tab-bar-wrapper .text {font-size: 20rpx;
}

3. 解决导航高亮需点击两次的问题

本以为通过以上两步就ok了,结果实际使用时,会发现切换底部导航时,页面切换了,但导航没有变高亮,需要再多点击一次才行……

解决方案如下:
在每个页面的 .js 文件中添加

  onShow() {this.getTabBar().init();},

即在每次页面显示时,对底部导航进行一次初始化。

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...