在使用uniapp分段器 u-subsection时,组件只会在框架内的加载一次,后续想更改分段器内部的数据,无论如何都不会渲染出来,虽然data内数据变了,但是组件始终不会渲染上这些数据。
<u-subsection :list="equipmentCountList" active-color="#1B93F8" mode="subsection" :current="current" @change="sectionChange">
这里我们改变equipmentCountList的值,始终不会渲染到页面上,vue有三种强制刷新的方法。
1. v-if(比较消耗性能)
2.给list加key,动态改变key
3.this.$forceUpdate
结果发现,this.$forceUpdate并不生效,使用v-if,v-else只能动态改变一次。u-subsection不支持加key的方式。最终通过给外层的DOM加一个标识,使用v-if,在改变标识后,延迟改变标识的方式成功解决。
<u-subsection :list="equipmentCountList" active-color="#1B93F8" mode="subsection" :current="current" @change="sectionChange">
update默认为false
在我们请求接口前,把update设置为false,请求接口后设置为true,使组件强制重新加载
this.update = false; //这个timeout相当于后台请求 setTimeout( ()=>{ _this.equipmentCountList = [ { name: '在线00000('+res.data.all+')' }, { name: '在线('+res.data.online+')' }, { name: '离线('+res.data.offline+')' } ] //请求结束后更改update的值 setTimeout(()=>_this.update = true,0) },3000 )
通过这种方法可以使uniapp组件强制重新加载。适用于那些不支持key,this.$forceUpdate不生效的组件。
Copyright © 2023 leiyu.cn. All Rights Reserved. 磊宇云计算 版权所有 许可证编号:B1-20233142/B2-20230630 山东磊宇云计算有限公司 鲁ICP备2020045424号
磊宇云计算致力于以最 “绿色节能” 的方式,让每一位上云的客户成为全球绿色节能和降低碳排放的贡献者