通过小程序自定义tabbar的文档https://developers.weixin.qq.com/miniprogram/dev/framework/ability/custom-tabbar.html的方法,自定义的tabbar已经显示
data: {
selected: 0,
list:[],
},
lifetimes:{
attached() {
...
//动态获取list数据
...
this.setData({list});// 无效
},
},
首次进来,tabbar能正常显示,但动态获取到tabbar的数据list之后,通过setData发现变化了,UI没更新,求解答???????
我这里瞅着也没解决啊...
官方说的很清楚了所以状态肯定无法在每个实例之间共享,把状态提升到全局,tabbar组件生命周期中同步下全局的状态就行了吧。
我这里也是ios不行,安卓和开发者工具都没问题,最后是加了700ms的延时配合 @汤加米 的办法在页面生命周期里面用 `this.getTabbar().setData({..})` 才解决的
请问解决了吗,我也碰到同样的问题,动态加载list,改变list的值页面不更新,但是打印的值是改过来了
今天试了一个方法希望可以帮到你
我的权限控制值是在登录接口获取的
在app.js里设置了一个全局变量(比如说isShowSth:false)
然后在登录进去后默认显示的page里onShow事件中调用 if (typeof this.getTabBar === 'function' && this.getTabBar()) { this.getTabBar().setData({ isShow: app.globalData.isShow }) } 以上可以实现根据权限动态显示隐藏tabbar
每个页面的tabbar实例都独立的吧
我也遇到了,无法动态setData
请提供能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。
Component({
data: {
selected: 0,
color: "#7A7E83",
selectedColor: "#3cc51f",
list: [{
pagePath: "/index/index",
iconPath: "/image/icon_component.png",
selectedIconPath: "/image/icon_component_HL.png",
text: "组件"
}, {
pagePath: "/index/index2",
iconPath: "/image/icon_API.png",
selectedIconPath: "/image/icon_API_HL.png",
text: "接口"
}]
},
attached() {
let that = this;
let list = [];
wx.request({
url: 'api地址',
header: {
'content-type': 'application/json' // 默认值
},
success (res) {
that.data({list:res.data});
}
});
},
pageLifetimes:{
show(){debugger
console.log("show");
}
},
methods: {
switchTab(e) {
const data = e.currentTarget.dataset
const url = data.path
wx.switchTab({url})
}
}
})