HarmonyOS @State修饰@observed装饰的对象, 对象里的数组改变, 不会触发ui刷新
@Preview
@Component
export struct OvenDemePage {
@State vm: VM = new VM([])
aboutToAppear(): void {
this.vm.push()
}
build() {
NavDestination() {
Column() {
Text('click')
.fontSize(50)
.onClick(() => {
this.vm.datas[0].title = 'ovnekjskdaljfa'
this.vm.push()
})
}.height(Percent.P20)
.justifyContent(FlexAlign.Center)
List({ space: 10 }) {
ForEach(this.vm.datas, (item: Item, index: number) => {
ListItem() {
JJJ({ data: item })
}
}, (item: Item, index: number) => index + "")
}.layoutWeight(1)
}.hideTitleBar(true)
.onBackPressed(() => {
DeepalRouter.pop()
return true
})
}
}
@Preview
@Component
export struct JJJ {
@ObjectLink data: Item
build() {
Text(this.data.title).fontSize(30)
}
}
/**
*
*/
@Observed
export class VM {
datas: Item[] = []
constructor(datas: Item[]) {
this.datas = datas
}
push() {
for (let i = 0; i < 10; i++) {
this.datas.push(new Item(Math.random() + " title"))
}
}
}
/**
* item
*/
@Observed
export class Item {
title?: string
constructor(title: string) {
this.title = title
}
}
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
使用@State修饰的数组对象,改变其中的某个对象的变量,自定义组件中的UI没有跟着刷新
1123浏览 • 1回复 待解决
HarmonyOS @State可以修饰对象数组
149浏览 • 1回复 待解决
HarmonyOS @state可以修饰对象数组么
163浏览 • 1回复 待解决
HarmonyOS 对象数组在@state修饰时,对象属性变化界面不刷新的解决办法
134浏览 • 1回复 待解决
HarmonyOS ObjectLink修饰符对象的属性改变不能引起UI刷新
699浏览 • 1回复 待解决
HarmonyOS 关于对象数组内容变更不会引起UI刷新
532浏览 • 0回复 待解决
HarmonyOS @State修饰的数组内部的值变化了,怎么刷新UI?
760浏览 • 1回复 待解决
HarmonyOS 非UI类中改变State装饰属性,无法触发UI渲染
380浏览 • 1回复 待解决
HarmonyOS 对象A数组,对象A中又嵌套一个对象B数组,修改B中的属性UI,不刷新
802浏览 • 1回复 待解决
@Observed中的数组变化无法触发界面刷新
1307浏览 • 1回复 待解决
@State 修饰的变量值改变,界面不刷新
1881浏览 • 1回复 待解决
HarmonyOS @Observed装饰的类,构造了对象数组,那这个数组中对象的属性变化之后,能引起视图的更新吗
1323浏览 • 1回复 待解决
ForEach数组发生改变。UI没刷新
942浏览 • 1回复 待解决
HarmonyOS @State修饰的Array<Object>修改对象的属性,单个item的页面数据没刷新。
209浏览 • 1回复 待解决
HarmonyOS 数组对象数据刷新
239浏览 • 1回复 待解决
HarmonyOS 对象数组在使用@Observed和@ObjectLink驱动子组件UI更新时的问题
352浏览 • 1回复 待解决
HarmonyOS 在定时器里面改变@state修饰的变量,无法更新UI吗?
412浏览 • 1回复 待解决
HarmonyOS @State修饰的ResourceStr内容在变更的时候较大几率不会响应UI的变换
135浏览 • 1回复 待解决
HarmonyOS LazyForEach不会更新@State里的值
276浏览 • 1回复 待解决
HarmonyOS @State刷新不了数组里面包含类的字段刷新UI
112浏览 • 1回复 待解决
HarmonyOS HashMap中放入数组,数组数据发生改变时如增加或者删除元素,如何触发UI刷新
205浏览 • 1回复 待解决
@State修饰的对象通过传参给子组件,子组件不刷新,获取的值为空
2223浏览 • 1回复 待解决
HarmonyOS 背景渐变色linearGradient怎么通过@State里定义的对象动态取值动态改变渐变色
57浏览 • 1回复 待解决
HarmonyOS 接口请求数据后,@State声明的对象不会更新组件
112浏览 • 1回复 待解决
HarmonyOS 为什么@Link的属性变更不会触发UI刷新?
607浏览 • 1回复 待解决
因为@Observed装饰器可以观察到嵌套对象的属性变化,其他装饰器仅能观察到第二层的变化。需要将具有观测能力的类对象绑定组件,来确保当改变这些类对象的内容时,UI能够正常的刷新(New一个继承了Array的对象而不是自定义数组)。具体参考如下链接,里面列举了几种失效场景,并提供了正确的写法。
相关文档:
https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs-V5/faqs-arkui-256-V5