鸿蒙开发刷新单个item会闪一下处理

avatar
作者
筋斗云
阅读量:0
鸿蒙开发刷新单个item会闪一下

首先我用的是懒加载方式,改变某位数据后我调listener.onDataChange(index),发现item的改动是变了,但是item也闪了一下。

先分析为什么item会闪一下

其他是因为item上有图片,加载的网络图。你onDataChange(index)时,它会重新加载这一item,自然图片也重新加载,因为是网络图,加载需要时间,所以就闪了一下

解决方案1:用@ObjectLink和@Observed配合使用

**好处:**用了它,你不用调onDataChange(index),它也会改动成功,并且不闪
**不好:**它只支持类,并且每个对象都得new 进去
关键代码示例如下:
1、bean类必须加@Observed

@Observed export class HomeBaseListBean{       authMsg?:string   jobAuthStatus?:boolean   videoAuthStatus?:boolean   vipStatus?:boolean   checkIsLove?:boolean      constructor(authMsg?:string,   jobAuthStatus?:boolean,   videoAuthStatus?:boolean,   vipStatus?:boolean,   checkIsLove?:boolean, 

2、必须是在@Component组件里面用

@Component export struct HomeWaterFallItemComponent {       // 继续用ObjectLink这样不用刷新整个item,避免闪烁   @ObjectLink userBean:HomeBaseListBean 

假设里面组件触发改变

Image(this.userBean.checkIsLove?$r('app.media.ic_heart_on_formal_three'):$r('app.media.ic_heart_off_formal_three'))             .width(24)             .height(24

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!