小程序
小游戏
企业微信
微信支付
扫描小程序码分享
使用了自定义的custom-tab-bar组件,不同页面的底部菜单栏内容都是不一样的,但是这些不同页面菜单栏的页面路径都必须配置在app.json的tabbar.list中,才能实现正常的切换。目前的问题是,app.json的tabbar.list中 最多只能配置10条,再多就编译报错,这种情况该如何处理呢?
4 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
可以自己在手写一个组件,复用custom-tab-bar的页面和css,然后核心的页面定义到app.json里面,非核心的定义到 tab-service.js 里面。 整体思路就是基于custom-tab-bar再手写一个组件,去处理扩展菜单。其实如果不介意每次进入页面都刷新的话,完全只使用自己写的组件也是可以的。 1. 多一个isTab字段用于区分是真正的菜单,还是扩展菜单 const updateRole = (that, type) => { //这里设置权限(分2种权限,权限1显示1,2,3, 4,5;权限2显示6,7,8,9,10;权限3显示11,12,13,14,15) if (type === '0') { tabData.tabBar.list=[ { "isTab": true, "pagePath": "pages/teacher/teacher", "text": "老师电源", "iconPath": "/images/0011.png", "selectedIconPath": "/images/0012.png" }, ........ } updateTab(that); } 2. updateTab 时,将菜单的数据传递给页面的data,再有页面传递给组件 // 更新Tab状态 const updateTab = (that) => { if (typeof that.getTabBar === 'function' && that.getTabBar()) { that.getTabBar().setData(tabData); } else { that.setData({ tabIndex: tabData.tabIndex, tabBar: tabData.tabBar }); } } 3. 核心菜单保持custom-tab-bar现有逻辑即可,扩展菜单页面需要引入组件,页面配置如下: <menu tabIndex="{{tabIndex}}" tabBar="{{tabBar}}"></menu> 4. switchTab 时,根据isTab区分是真菜单还是扩展菜单,然后分别跳转 switchTab(event) { // data为接受到的参数 const data = event.currentTarget.dataset; console.log(data); if(data.istab){ wx.switchTab({url: data.path}); } else{ wx.navigateTo({url: data.path}); } }
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
在手机上显示10个以上的tab你觉得合理嘛
微信限制的多少,就只能设置多少个
建议在看看文档,如果确认没问题,低于10个自定义的tabbar能正常展示的话,那可能就是限制最多配置10个页面
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
可以自己在手写一个组件,复用custom-tab-bar的页面和css,然后核心的页面定义到app.json里面,非核心的定义到 tab-service.js 里面。 整体思路就是基于custom-tab-bar再手写一个组件,去处理扩展菜单。其实如果不介意每次进入页面都刷新的话,完全只使用自己写的组件也是可以的。 1. 多一个isTab字段用于区分是真正的菜单,还是扩展菜单 const updateRole = (that, type) => { //这里设置权限(分2种权限,权限1显示1,2,3, 4,5;权限2显示6,7,8,9,10;权限3显示11,12,13,14,15) if (type === '0') { tabData.tabBar.list=[ { "isTab": true, "pagePath": "pages/teacher/teacher", "text": "老师电源", "iconPath": "/images/0011.png", "selectedIconPath": "/images/0012.png" }, ........ } updateTab(that); } 2. updateTab 时,将菜单的数据传递给页面的data,再有页面传递给组件 // 更新Tab状态 const updateTab = (that) => { if (typeof that.getTabBar === 'function' && that.getTabBar()) { that.getTabBar().setData(tabData); } else { that.setData({ tabIndex: tabData.tabIndex, tabBar: tabData.tabBar }); } } 3. 核心菜单保持custom-tab-bar现有逻辑即可,扩展菜单页面需要引入组件,页面配置如下: <menu tabIndex="{{tabIndex}}" tabBar="{{tabBar}}"></menu> 4. switchTab 时,根据isTab区分是真菜单还是扩展菜单,然后分别跳转 switchTab(event) { // data为接受到的参数 const data = event.currentTarget.dataset; console.log(data); if(data.istab){ wx.switchTab({url: data.path}); } else{ wx.navigateTo({url: data.path}); } }在手机上显示10个以上的tab你觉得合理嘛
微信限制的多少,就只能设置多少个
建议在看看文档,如果确认没问题,低于10个自定义的tabbar能正常展示的话,那可能就是限制最多配置10个页面