阅读量: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