HarmonyOS 对象内数组内对象属性的修改问题
如demo的层级关系,点击后向修改原对象内一个数组内对象的某个属性失败。
@Observed
export class ChannelColumn {
/**
* 对象唯一标识
*/
objectKey: string = ""
videoInfo_list: ObservedArray<TestInfo> = new ObservedArray()
}
@Observed
export class ObservedArray<T> extends Array<T> {
constructor(args?: T[]) {
if (args instanceof Array) {
super(...args);
} else {
super();
}
}
}
@Observed
export class TestInfo {
isFoldFor1003: boolean = true;
//vip频道改版
maintitle: string = '';
constructor(isFoldFor1003: boolean, maintitle: string) {
this.isFoldFor1003 = this.isFoldFor1003;
this.maintitle = maintitle
}
}
@Component
export struct AEnterTest {
@State @Watch('columnItemChange') columnItem: ChannelColumn = new ChannelColumn()
aboutToAppear(): void {
let videoInfo_list: ObservedArray<TestInfo> = new ObservedArray()
videoInfo_list.push(new TestInfo(false, '测试数据1'))
videoInfo_list.push(new TestInfo(false, '测试数据2'))
videoInfo_list.push(new TestInfo(false, '测试数据3'))
this.columnItem.videoInfo_list = videoInfo_list
}
columnItemChange() {
console.log("columnItemChange")
for (let i = 0; i < 3; i++) {
console.debug('修改结果=' + this.columnItem.videoInfo_list[i].maintitle + ':' +
this.columnItem.videoInfo_list[i].isFoldFor1003)
}
}
build() {
Row() {
ChannelBaseTemplateView({
columnItem: this.columnItem,
})
}
}
}
@Component
export struct ChannelBaseTemplateView {
@ObjectLink columnItem: ChannelColumn
build() {
SpecialPicText({ columnItem: this.columnItem })
}
}
@Component
export struct SpecialPicText {
@ObjectLink columnItem: ChannelColumn
build() {
Column() {
Text('测试点击刷新数组内的对象的属性问题')
.id('test')
.width('100%')
.height(50)
.align(Alignment.Center)
.onClick(() => {
this.columnItem.videoInfo_list[0].isFoldFor1003 = false;
}
)
}
}
}
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
如何监听数组内对象属性变化
2562浏览 • 1回复 待解决
HarmonyOS 对象内数组排序问题
199浏览 • 1回复 待解决
HarmonyOS 对象A数组,对象A中又嵌套一个对象B数组,修改B中的属性UI,不刷新
769浏览 • 1回复 待解决
HarmonyOS endable对象属性napi无法修改
58浏览 • 1回复 待解决
HarmonyOS 是否支持对象属性进行修改
56浏览 • 1回复 待解决
HarmonyOS 如何监听数组对象中元素属性的变化
322浏览 • 1回复 待解决
ArkUi关于page之间传递PixelMap对象,在Image对象内无法现实的问题有了解的吗?
4909浏览 • 1回复 待解决
HarmonyOS 如何获取一个对象内的所有变量
403浏览 • 1回复 待解决
HarmonyOS 对象数组在@state修饰时,对象属性变化界面不刷新的解决办法
99浏览 • 1回复 待解决
HarmonyOS 数组修改item对象的某个值,notifyDataReload无法重新渲染LazyForEach
294浏览 • 1回复 待解决
HarmonyOS 数组中对象的排序
211浏览 • 1回复 待解决
FA模型不支持进程内对象共享的原因?
550浏览 • 1回复 待解决
HAR包内的单例对象与HAR包相互之间依赖关系问题。
1082浏览 • 1回复 待解决
为什么FA模型不支持进程内对象共享
2216浏览 • 1回复 待解决
HarmonyOS 关于数组包裹对象中更新组件问题
221浏览 • 1回复 待解决
HarmonyOS @Observed装饰的类,构造了对象数组,那这个数组中对象的属性变化之后,能引起视图的更新吗
1284浏览 • 1回复 待解决
HarmonyOS 如何实现根据数组元素对象属性的变化同步更新UI
108浏览 • 1回复 待解决
HarmonyOS 数组对象数据刷新
197浏览 • 1回复 待解决
HarmonyOS 使用ObjectLink观察对象中的数组,修改数组长度,监听不到数据变化
791浏览 • 1回复 待解决
HarmonyOS 关于objectLink在数组对象中使用时,修改数据页面不刷新问题
852浏览 • 1回复 待解决
HarmonyOS @State可以修饰对象数组
127浏览 • 1回复 待解决
HarmonyOS @Watch 如何检测数组内元素变化
299浏览 • 1回复 待解决
HarmonyOS 如何修改H5内的localstorage
45浏览 • 1回复 待解决
HarmonyOS 如何遍历对象属性
113浏览 • 1回复 待解决
HarmonyOS @state可以修饰对象数组么
155浏览 • 1回复 待解决
只修改list中的元素属性无法被监听到,需要对整体的list元素了调整了才能监听到。或者只有@ObservedV2和@Trace修饰需要监听的类对象的属性,可以实现动态的UI刷新。
@ObservedV2文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-new-observedv2-and-trace-V5
代码调整如下: