微信小程序开发动态设置tabbar

需求描述

不同身份的用户登录后,动态更改底部导航栏,也就是 tabbar。
注意 不是简单改变 tabbar item 的样式,而是需要更改 item 文字,icon, 关键是跳转链接 pagePath。

技术框架

基于uni-app开发,使用了 colorui、uview等第三方框架。

但当前阶段主要是以微信小程序的作为客户端展示。

解决思路

下面就我实际开发中实际实践过的解决思路做了个总结:

  • 基于 view 自定义 tabbar

    • 基于 colorui 实现思路,view 布局一个完全自定义的 tabbar,然后基于一个页面,把 tab 页面以组件的形式,通过 v-if 来切换实现切换 tab 的效果。
      • 优点:高度灵活,可任意自定义样式。
      • 缺点:
        • 性能问题:当页面比较简单的(如博客或企业官网),还比较流畅;当每个 tab 页面稍微复杂点,加载慢卡顿问题明显,用户体验特别差,当然和设备硬件能力也有关系(这是我放弃该方案的直接原因)。
        • 路由问题:同样对也小型项目,页面功能结构简单,也只是基本可用。对于页面复杂,每次路由到某个tab 页面,再加上组件的生命周期限制,触发更新数据是个棘手的问题。
    • 基于 uview 实现思路,为了提高性能问题,uview 官方还是基于 原生 tabbar 出来一个解决方案,但是 隐藏原生 tabbar 后,微信小程序启动的一瞬间, 原生 tabbar 还是有闪现的一瞬,这个体验极差,但是这个问题,是微信小程序官方都未解决的问题。所以该方式我已放弃了。
  • 原生 tabbar

    • 优点
      • 点击切换,页面加载性能出色。
      • 配置简单,只需要 page.json 中配置 tabbar 项即可,样式简单设置,其它都依赖官方能力。
    • 缺点
      • 样式自定义能力极差,这个 UI设计 能力强一些我都勉强接受了。
      • 无法动态设置 tab item 的 pagePath,直接无法满足需求,这是我放弃该方案的直接原因。(注意 uni-app 的 api 虽然提供了该参数,但并不支持微信小程序。)
  • 微信官方的 自定义 tabbar

    • 目前还未实践,主要是平台扩展性弱,官方的 demo 很简单,已经出现了切换 tabbar 时重新加载渲染 tabbar 的不好体验。然而可自定义动态配置优点,带来的工作量稍微有点大,暂时放弃。

最终方案

使用原生的 tabbar,通过官方提供的 api 设置文字和icon,以及红点角标数字等,解决不能动态设置 pagePath 的替代思路是 在 tab 页面内做 v-if 判断,根据角色不同,来显示不同内容,体验尚可,而且将来支持动态支持 pagePath 了,也容易更改,不会涉及太多代码修改。

这种设计思路,目前来讲,无论是交互体验还是页面加载性能,都是比较适合我们目前的项目的。也可能对您的项目不合适,所以仅供参考。

如果您有更好的解决思路,期待您的分享~~

参考资料

https://51blog.xyz/article/23.html
在这里插入图片描述

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
微信小程序是一种基于微信平台开发的应用程序,可以在微信内直接运行。它提供了一种方便快捷的方式来开发和分享小程序。在微信小程序中,我们可以使用tabbar来实现底部导航栏,方便用户进行页面切换。 为了实现动态修改tabbar,我们可以使用微信小程序的API进行操作。首先,我们需要在小程序app.json文件中定义tabBar的结构和样式。在定义中,我们可以设置每个tab的页面路径、图标和标题等属性。 当我们需要动态修改tabbar时,可以通过调用微信小程序的API wx.setTabBarStyle() 来修改tabbar的样式,包括背景颜色、选中状态的颜色等。 同时,我们可以通过调用wx.setTabBarItem()来修改单个tab的图标和标题等属性。 在业务逻辑中,我们可以监听用户的事件触发,并根据需要来修改tabbar的样式。比如,当用户点击某个按钮时,我们就可以调用以上API来动态修改tabbar。 需要注意的是,修改tabbar的样式是全局生效的,这意味着无论在哪个页面调用API进行修改,都会对所有页面生效。因此,在使用时需要考虑全局的一致性和用户体验。 总之,通过使用微信小程序提供的API,我们可以实现动态修改tabbar的样式,为用户提供更好的交互体验。这为小程序开发者提供了更多的灵活性和自定义性,方便我们根据具体的业务需求来进行界面的设计和调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

西涯三锋

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

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

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

打赏作者

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

抵扣说明:

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

余额充值