关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

解决uniapp分段器参数改变不渲染,适用所有组件

发布时间:2023-06-27 14:00:21

    在使用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不生效的组件。


/template/Home/leiyu/PC/Static