微信小程序自定义tabBar跳转研究

在日常开发中,难免需要使用自定义tabBar。

目前使用自定义tabBar有两种方式:1、官方提供的custom-tab-bar组件;2、完全由自己写的tabBar组件。

分析下笔者使用的两种方式的优劣性吧 --- 是在一个相册集产品中遇到的:有首页、个人、制作三个tabBar页面,样式比较丰富、同时需要再制作页面的时候不显示tabBar。

一开始的时候,使用的是官方的custom-tab-bar组件,但是在使用wx.hideTabBar()这个API的时候却发现不起作用,而且貌似这个组件名还不能改名,这是个人是使用体验,如有错误还望指出。

所以后面就使用全自定义的tabBar组件,但是在跳转方面又遇到了问题:在使用自带的tabBar和官方的tabBar时候,tabBar页面的跳转方式使用的是wx.switchTab()跳转方式,这个好处是,保持了页面栈的限制,同时减少了页面跳转的白屏问题,近首次渲染时的白屏问题。白屏问题与之相对应的是全自定义tabBar组件的跳转方式,因为无法使用wx.switchTab()跳转方式,所以在选择方面一开始的想法:在wx.redirectTo()和wx.navigateTo()。考虑页面栈问题,剔除wx.navigateTo(),使用wx.redirectTo()。但是在开发过程中,实际上除了二次白屏问题,还有可能有页面栈问题(除了tabBar页面还有其他页面)。没办法,只能另想方法,想到了用wx.navigateTo()和wx.navigateBack()相结合的做法。

tabBar组件的列表有每个引入的页面传入,格式如下

{ 'pagePath': '', 'delta': 0 },

{'pagePath': '/pages/make/make', 'delta': 0},

{ 'pagePath': '/pages/person/person', 'delta': 0 }

首先根据pagePath是否有值判断是否是当前页,如果是当前页,点击不发生跳转。

然后根据delta是否为0来决定navigator组件的open-type方式,值为0则navigate,不为0则navigateBack方式,后退的页面数为delta的值,那么剩下的就是动态的改变每个页面的delta值。

以下是个人写的方法

参数pageExample使用时传入每个页面的this,tabbarPaths是项目的tabBar页面路由

大概思路就是在当前页面栈是否有tabBar页面,有tabBar页面的,重新赋值delta,没有的保持0不改变

以上,欢迎探讨。

 

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在实现根据不同角色显示不同的Taber时,可以通过以下步骤来完成: 首先,需要在UIApp中定义不同角色的权限信息。可以根据具体需求,将不同角色的权限信息存储在数据库中或者是通过配置文件进行管理。权限信息可以包括角色名称、角色ID以及所拥有的Taber等信息。例如,可以定义角色A和角色B,其中角色A拥有Taber1和Taber2,而角色B仅拥有Taber2。 其次,在App中,可以通过调用后端接口或者获取本地存储的权限信息来获取当前用户的角色信息。可以采用用户登录的方式来获取用户角色信息,一般是在登录成功后,将用户角色信息存储在本地或者会话中。 然后,根据用户角色信息,动态生成用户所拥有的Taber。可以通过根据角色权限信息中定义的Taber信息来实现动态生成。例如,对于角色A,可以显示Taber1和Taber2;对于角色B,只显示Taber2。可以将生成的Taber添加到App界面的适当位置,以便用户可以点击切换。 最后,可以根据需要,为不同的Taber添加相应的功能逻辑。可以通过监听用户点击事件来进行相应的页面或者展示不同的内容。 总结起来,实现根据不同角色显示不同的Taber可以通过定义角色权限信息、获取用户角色信息、动态生成Taber以及添加相应的功能逻辑这几个步骤来完成。这样可以根据不同角色的权限需求,为用户提供个性化的App使用体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值