使用@State修饰数据源,列表数据刷新,列表item内图片闪烁 。
刷新代码:
changeLike(item: ReplyItemModel) {
if (item.likeFlag) {
// 点过赞
item.likeNum--
} else {
// 没有点过赞
item.likeNum++
}
item.likeFlag = !item.likeFlag // 取反
const index = this.commentList.findIndex(obj => obj.id === item.id)
this.commentList[index] = new ReplyItemModel(item)
}
请参考:用@ObjectLink去改造:若仅靠LazyForEach的刷新机制,当item变化时若想更新子组件,需要将原来的子组件全部销毁再重新构建,在子组件结构较为复杂的情况下,靠改变键值去刷新渲染性能较低。
因此框架提供了@Observed与@ObjectLink机制进行深度观测,可以做到仅刷新使用了该属性的组件,提高渲染性能。
开发者可根据其自身业务特点选择使用哪种刷新方式。
文档支持 :https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-rendering-control-lazyforeach-V5