如何动态设置底菜单?
发布于 7 年前 作者 jingmo 13901 次浏览 来自 官方Issues

业务上需要根据用户角色来动态配置底菜单,例如:角色A:需要使用底菜单 a,b,c;角色B:需要使用底菜单 a,c,d;角色C:需要使用底菜单 x,y,z,底菜单的数量是不固定的。参考了官方的自定义tabbar,似乎是无法满足需求的。官方自定义tabbar也需在json中声明,且‘只能配置最少 2 个、最多 5 个 tab’,只是把渲染这块交给了开发者。

抛开官方的方案,可以用自定义组件,然后在每个页面内引入组件,自己控制路由和显示内容。这个是可以满足业务需求,为了保证类似于原来的tabbar,路由用首页开始到tabbar页面,一直用 wx.redirectTo()。相应也出现了一些问题。

  1. 页面的生命周期发生了变化。这种路由条件下每次都会触发onload函数,这个是区别于原来的tabbar

  2. 每次进入页面自定义组件都要重新加载,会出现闪烁问题。这个情况在部分机型上还是挺明显的。

想过去修改页面栈,自己去模拟switchTab,尽管官方不建议修改。事实上我也没有找到修改的办法。getCurrentPages() 似乎返回页面栈拷贝,修改无效。

不知道各位有没有类似的解决方案,还望不吝赐教。

3 回复

找到一个简单的方法

其实就是允许用户通过pc端的系统,自定义底菜单… 是不是有点难为小程序了。

回到顶部