微信小程序动态tabBar实现

微信小程序动态tabBar实现,第1张

最近做项目的时候,突然来了个小特殊的需求,根据客户的类型来动态显示底部的tabBar菜单。当时我就有点小懵逼了,这个不是小程序自带的组件么?还要做成动态?这就有点尴尬了.....

不过也只是一时尴尬而已,然后我就展开了搜索之旅.....然后发现,官方的组件确实没办法做动态,那咋办,如果真的有这个需求那也是得去处理滴呀~然后也看了裂并有一些做到这效果的方法,那就试一下呗。。其实就是自定义个tabBar的模板,以下是实现:

首先,既然是说自定义组件,那是用到template了。那先在Page里新建个template的文件夹,以便放tabBar的组件。

然后新建个tabBar.wxml文件,这里就写下你的tabBar的结构。

下面是tabBar所需要用到的样式,我这里就直接写在全局app.wxss了。

然肆漏迹后接下来是js的部分,由于是底部的导航,那肯定是不止一个页面用到的,那这里就可以写在全局的app.js里面方便使用。这里我写了两种tabBar的模板,分别对应来显示

然后在需要用到这个组件的页面上直接调搜辩用。比如这里的index页面。

然后去index.js里面调用tabBar

然后下面是效果图。

就这些。我个人觉得这个自定义导航的用户体验不是很好,能不用就不要用,不过知道下方法也是ok滴!如有发现有错或者不足的地方可以指出,谢谢!

这次的项目需求是用户存在两种身份,普通用户和师傅肢虚郑用户,那么要根据不同的身份展示不同的tabBar菜单,看了下官方文档,难度不大,但是由于我用的框架是Taro,所以实现起来很难,试了几次Api调不通就放弃了,转为JS大法写了,誉姿但是配置方面还是得按照小程序文档来。

做成效果

此文是Taro版,非原生,思路历颂可供参考,毕竟JS是互通的。

此文件编写的组件会作为自定义的tabBar展示出来

app.json 直接配置:

官方文档: 自定义 tabBar

custom-tab-bar/index

在小程序根目录下新建 custom-tab-bar 文猛州件夹,文件夹下建立相应的组件。

wxml 文件:

推荐使用 cover-view + cover-image 组件渲染样式,以保证 tabBar 层级相对较高。不过现在使用 view 也可以,之前是因为使用 map 组件可能会导致无法覆盖,现在 map 组件已经支持同层渲染,所以使用 view 也是没问题的。

js 文件:

tabbar 的配置主要在这里。

因为每个 tab 页下的自定义 tabBar 组件实例是不同的,在跳转新的tab 后,是一个新的 tabbar 实例,先前那个已经被销毁了,所以要重新设置。

在每个自定义的 tab 页面 onShow 方法中,

可见使用系统提供自定义 tabbar 方式不好的地方在于每个 tabbar 页面都要手动设置一遍选中状态。

为什么说是系统自定义的?

因为我们自定义的组件 custom-tab-bar/index 并没有在每个枝迹蔽页面的 json 中进行单独配置进行组件的引用,都是系统默认配置好的。

官方文档 Tabbar 。

通过 useExtendedLib 扩展库 的方式引入 weui 组件库。

app.json 配置:

在 tab 页面的 page.json 中引入 tabbar 组件即州斗可:

wxml 使用:

直接将第二种方式 使用系统自定义的方式 custom-tab-bar/index 文件夹及文件移动到 components 自定义组件文件夹中 ,并将 app.json 中的 tabbar 配置删除即可。

在相应的 tab 页面引入自定义 tabbar 组件即可。

屏幕有效区域高度 windowsHeight,需要手动维护,系统不再维护。使用系统的 tabbar,屏幕的有效区域高度 windowsHeight = 屏幕高-状态栏高度-导航条高度-tabbar高度 ;而自定义的 tabbar 则没有计算 tabbar 高度,即 windowsHeight = 屏幕高-状态栏高度-导航条高度 。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12568530.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存