HarmonyOS List item 刷新问题
List() {
ForEach(this.dataList, (item: AddressListDataEntity,position:number) => {
ListItem() {
Column() {
Row() {
Text(item.name).fontColor($r("app.color.color_393939")).fontSize('18fp')
Text(item.mobilenumber)
.margin({ left: SizeUtil.lpx2px(20) })
.fontColor($r("app.color.color_393939"))
.fontSize('14fp')
}.width('100%')
.justifyContent(FlexAlign.Start)
Text(item.province + " " + item.city + " " + item.area + " " + item.street + " " + item.detail)
.fontColor($r("app.color.999999"))
.fontSize('14fp')
.margin({ top: SizeUtil.lpx2px(30) })
Column().width('100%')
.backgroundColor($r("app.color.EDEDED"))
.height('1vp')
.margin({ left: SizeUtil.lpx2px(30), right: SizeUtil.lpx2px(30), top: SizeUtil.lpx2px(30) })
RelativeContainer() {
Row() {
Image(this.isChooseAddress ? item.isSelect ? $r("app.media.blue_checked") : $r("app.media.blue_unchecked") : (item.isDefault == "T") ? $r("app.media.blue_checked") : $r("app.media.blue_unchecked"))
.height(SizeUtil.lpx2px(30))
.width(SizeUtil.lpx2px(30))
Text(this.isChooseAddress ? item.isSelect ? "已选地址" : "选择地址" : (item.isDefault == "T") ? "默认地址" : "设为默认")
.fontColor($r("app.color.999999"))
.fontSize('14fp')
.margin({ left: SizeUtil.lpx2px(15) })
}.alignRules({
center: { anchor: "__container__", align: VerticalAlign.Center },
left: { anchor: "__container__", align: HorizontalAlign.Start }
})
.id("left_content")
.onClick(() => {
if (this.isChooseAddress) {
item.isSelect = !item.isSelect//>>>>>>在这里修改不刷新UI
} else {
let data: ToggleData = {
id: item.id,
isDefault: item.isDefault == "T" ? "F" : "T"
}
Api.getInstance().post<DataEntity>(RequestPath.API_ADDRESS_TOGGLE, data).then(data => {
this.getAddressList()
})
}
})
Text("修改")
.fontColor($r("app.color.999999"))
.fontSize('15fp')
.alignRules({
center: { anchor: "__container__", align: VerticalAlign.Center },
right: { anchor: "__container__", align: HorizontalAlign.End }
})
.id("change")
.onClick(() => {
NavigatorUtil.toEditAddressPage(item)
})
}.width('100%')
.height(SizeUtil.lpx2px(50))
.margin({ top: SizeUtil.lpx2px(20) })
}.width('100%')
.padding({
top: SizeUtil.lpx2px(20),
bottom: SizeUtil.lpx2px(20),
left: SizeUtil.lpx2px(35),
right: SizeUtil.lpx2px(35)
})
}.width('100%')
.border({ radius: 10 })
.backgroundColor($r("app.color.color_FFFFFF"))
}, (item: AddressListDataEntity) => JSON.stringify(item))
}
代码如上 在list的 foreach 的item 中 修改对象的值 image UI没有刷新 怎样可以刷新UI?
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
HarmonyOS 列表刷新问题
174浏览 • 1回复 待解决
HarmonyOS 页面跳转刷新问题
146浏览 • 1回复 待解决
NativeWindowFlushBuffer接口刷新问题
1639浏览 • 1回复 待解决
HarmonyOS使用Refresh下拉刷新问题
233浏览 • 1回复 待解决
HarmonyOS overlay机制调用后界面刷新问题
188浏览 • 1回复 待解决
HarmonyOS List组件动态刷新数据问题
81浏览 • 1回复 待解决
Web组件加载在线页面存在2次刷新问题
212浏览 • 1回复 待解决
鸿蒙页面检测不到数据发生改变的刷新问题,能否强制刷新
9172浏览 • 1回复 待解决
HarmonyOS Swiper里面的item高度自动刷新
111浏览 • 1回复 待解决
HarmonyOS 关于objectLink在数组对象中使用时,修改数据页面不刷新问题
143浏览 • 1回复 待解决
HarmonyOS中List组件是否支持局部刷新
159浏览 • 1回复 待解决
HarmonyOS list的item拖拽到底部的时候,list无法向上滚动
90浏览 • 1回复 待解决
点击一个list的item,怎么给这个item添加class
5680浏览 • 1回复 待解决
HarmonyOS Grid容器视图更新问题
152浏览 • 1回复 待解决
【List组件】点击列表的当前item,怎么让当前item图标显示,同时其他item里图标隐藏
675浏览 • 1回复 待解决
list-item 根据boolean属性 动态设置class
4550浏览 • 1回复 待解决
JS swiper 怎么像list一样动态添加item?
6068浏览 • 1回复 待解决
HarmonyOS List垂直布局,lanes(2)能否让某个item占据2格
134浏览 • 1回复 待解决
HarmonyOS List组件能实现ListItem的局部刷新吗?
233浏览 • 1回复 待解决
List设置了lanes(2)怎么让最后一个item能占据整个List宽度
1714浏览 • 1回复 待解决
list的add跟remove item的入场、出场动画
689浏览 • 1回复 待解决
List的item点击变色有什么好方法吗
1791浏览 • 1回复 待解决
HarmonyOS list滑动问题
282浏览 • 1回复 待解决
HarmonyOS list 嵌套web滑动切换问题
109浏览 • 1回复 待解决
List局部刷新,有人知道怎么处理吗?
699浏览 • 1回复 待解决
当数据源的数组项为对象数据类型,并且只修改某个数组项的属性值时,由于数据源为复杂数据类型,ArkUI框架无法监听到@State装饰器修饰的数据源数组项的属性变化,从而无法触发ForEach的重新渲染。
为实现ForEach重新渲染,需要结合@Observed和@ObjectLink装饰器使用
参考链接:
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/arkts-observed-and-objectlink-0000001774279618#ZH-CN_TOPIC_0000001811157490__%E5%9C%A8observed%E8%A3%85%E9%A5%B0%E7%B1%BB%E7%9A%84%E6%9E%84%E9%80%A0%E5%87%BD%E6%95%B0%E4%B8%AD%E5%BB%B6%E6%97%B6%E6%9B%B4%E6%94%B9%E6%88%90%E5%91%98%E5%8F%98%E9%87%8F
当前@ObjectLink修饰的变量,确实只能通过new的方式实例化,不能直接将后端返回数据通过json反序列化方式装对象。
因为构造方法被特殊处理过,所有开发者需要接受后端数据后,需要new出对象,将后端返回数据遍历,塞到new的对象里面