小程序TabBar数据由远程API提供, 可实现完全动态根据不同用户显示不同的菜单, 同时增加了getTabBarIndex 函数,可根据tabBar的pagePath 名称获取tab的索引,避免了索引和菜单不匹配的情况。
api数据示例: http://rap2api.taobao.org/app/mock/320908/loginTabDemo
-
需要再app.json中的tabBar节点配置 "custom": true, 使用自定义tabBar; 同时这个节点的 list里面就只需要指定tabBar的页面路径pagePath即可。
-
在项目根目录创建 custom-tab-bar 目录,这个目录里面就是自定义tabBar的组件; 注意这个目录只能是 custom-tab-bar 不能是其他的。
-
在用户登录后根据用户的角色或者其他规则将用户对应的tabBar数据存储到本地存储里面, 然后却换 switchTab到tabBar的页面; 当然,如果你的需求仅是动态获取tabBar或者小程序启动后就需要自动登录的话,可以将网络请求的逻辑写在app.js文件中, 既 onLaunch() {} 这个生命周期函数里面,这样的话就可以直接使用app.js里面的全局变量来保存tabBar数据,然后custom-tab-bar里面直接调用app.js中的全局变量数据tabBarList即可。
-
tabBar页面在onShow生命周期函数里面重新获取tabBar并设置当前tabBar, 这样就会触发tabBar里面的attached生命周期函数中的重新赋值tabBar数据的逻辑,从而实现动态更新TabBar;
-
注意在用户退出后必须wx.reLaunch重新加载页面,否则换个用户登录tabBar不会改变!
下载安装微信开发者工具, 然后打开本项目,设置好你的小程序appid 即可查看和演示效果