微信自定义tab页面 实践和问题

例如标题  针对 微信小程序  tabs 遇到的问题 

对于官方自定义tab 和手搓 自定义tab 给出我自己的经历

当你的UI或者你的奇思妙想拦不住的时候   

官方提供的永远是最简单的 

一丶官方样式太简单  不利于UI拓展

微信官方限制  tab栏仅需要提供名字和图标时  便极大的限制了开发 

但官方也放开了自定义tab栏   性能会有欠佳    

但是相对自己手写的tab栏  无论是切换体验  还是灵活度   官方的无疑最佳

下面是针对UI设计调整的自定义tab栏

自定义tab

无论是uni-app  还是微信原生   都需要这样的结构 

代码内容请去查看官方demo   在官方demo中调整

自定义tab结构 

在搭好组件结构后  需要在配置中添加tab相关设置

在uni-app中 配置 pages.json   原生微信在app.json中配置 

也可以去官网直接看文档

微信官方文档

官方提供的自定义组件  大于两个tab时   去赋值会有赋值延迟   页面正确但选中样式会停留在上一步


首页  服务记录反复跳  但上一步和下一步index一致


官方的例子   会重复赋值

所以自定义很坑  uni-app官方没给自定义tabbar怎么处理  

不适用所以也没深入研究   有人可以解决这问题的话  请联系我   我把这文章补充了 

二丶单页面多应用 

在服务级别小程序中   一定会遇到不同的角色拥有不同的tab和不同的样式  例如  以下:

不一样的tab

一般遇到这样的问题   都会采用自己手写tab组件   针对登录的角色  调整tab栏

公司需求为针对角色有9个tab栏    故官方的自定义不支持  最多五个   而且还不能随时更换

开发这种类型的tab 得注意细节 

一定得知道 wx.navigateTo  和  wx.relaunch 的区别

wx.navigateTo 缓存当前路由 保持在路由栈中 

wx.relaunch 清空所有路由栈 打开新的页面

知道他们的区别   会提升操作体验   

relaunch 切换会显示右滑动作 并且伴随屏幕闪烁

navigateTo  不会有切换动作   闪烁正常

单navigateTo是存在路由栈中的    微信路由栈只能缓存十条  最底部的会被清理掉   超出路由栈则不会跳转

我对于tab栏 使用了 navigateTo   并且每次跳转会查询当前路由栈数量  

当路由栈数量大于6时  使用 relaunch 则重新开启页面

getCurrentPages 方法可以获取当前路由栈

别嫌弃代码丑系列

但这种优化得体验并没有原生的好,也希望官方尽早兼容一下  (听过这个问题 19年就有人在社区提了  都2202年了)

三丶 联想式开发 

以下皆为想法:

既然涉及到多tab就不好用了    其实自定义也可以这样玩

开发单页面单应用  涉及tab页面的就作为组件展示内容  不涉及tab页面的就跳转

但这单页面体积会很大   只适合小型业务

下次还有机会就实现实现   这座屎山我是翻不动了 



注:禁止直接搬运  请在有深入研究后借鉴

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容