HarmonyOS 使用了Observed界面仍然不刷新
@Entry
@Component
struct Index {
@State a : A = new A()
build() {
Column() {
Child({a:this.a}).width('100%').height('100%')
}
}
}
@Component
struct Child{
@ObjectLink a:A
build() {
Text(this.a.b.name).width('100%').height('100%').onClick(()=>{
this.a.b.name = "222222"
})
}
}
@Observed
class A {
b:B = new B()
}
@Observed
class B {
name:string = '11111'
constructor(name: string = "11111") {
this.name = name;
}
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
上面的代码,点击后,为什么界面不会刷新
HarmonyOS
赞
收藏 0
回答 1
相关问题
@Observed中的数组变化无法触发界面刷新
1863浏览 • 1回复 待解决
HarmonyOS 深色模式切换后界面不刷新
1069浏览 • 1回复 待解决
HarmonyOS @Observed不生效问题
1587浏览 • 1回复 待解决
HarmonyOS使用@ObjectLink 数据不刷新
1469浏览 • 2回复 待解决
@State 修饰的变量值改变,界面不刷新
2571浏览 • 1回复 待解决
关于使用foreach&lazyforeach更改数据源界面不刷新的问题
2076浏览 • 2回复 待解决
HarmonyOS 界面信息刷新
849浏览 • 1回复 待解决
HarmonyOS 嵌套数组使用observed修饰后,修改数组值不更新
1028浏览 • 1回复 待解决
HarmonyOS customdialog使用了router跳转到其他的page之后仍然显示在上面,要如何解决
549浏览 • 1回复 待解决
HarmonyOS UI不刷新
842浏览 • 1回复 待解决
使用LazyForEach渲染语法渲染组件,UI不刷新。
2108浏览 • 1回复 待解决
HarmonyOS @Observed和@ObservedLink使用问题
1202浏览 • 1回复 待解决
HarmonyOS @Observed修饰的类属性变化没有引起子组件刷新
1118浏览 • 1回复 待解决
HarmonyOS 使用@Observed和@ObjectLink修饰的自定义数据模型viewModel刷新问题
1368浏览 • 1回复 待解决
修改ForEach使用的数据对象,UI不刷新
3025浏览 • 1回复 待解决
HarmonyOS 对象数组在@state修饰时,对象属性变化界面不刷新的解决办法
960浏览 • 1回复 待解决
如何解决使用foreach&lazyforeach循环渲染时,会出现更改数据源时,界面不刷新的问题
1901浏览 • 1回复 待解决
HarmonyOS UI不刷新问题
826浏览 • 1回复 待解决
HarmonyOS 卡片更新图片不刷新
893浏览 • 1回复 待解决
HarmonyOS LIst组件UI不刷新
605浏览 • 1回复 待解决
HarmonyOS IDataSource数据源刷新后,列表为不刷新
1321浏览 • 1回复 待解决
HarmonyOS 如何在页面刷新时保持某组件不刷新
586浏览 • 1回复 待解决
HarmonyOS 更新数据后UI不刷新
1058浏览 • 1回复 待解决
使用foreach&lazyforeach循环渲染时,会出现更改数据源时,界面不刷新的情况。如何解决
3400浏览 • 1回复 待解决
HarmonyOS overlay机制调用后界面刷新问题
1082浏览 • 1回复 待解决
无法观察嵌套在属性中的属性,即this.a.b.name(属性c是内嵌在b中的对象classC的属性)。
为了观察到嵌套于内部的ClassC的属性,需要做如下改变:
1、构造一个子组件,用于单独渲染ClassB的实例。 该子组件可以使用@ObjectLink b : ClassB。通常会使用@ObjectLink,除非子组件需要对其ClassC对象进行本地修改。
2、嵌套的ClassC必须用@Observed装饰。当在ClassA中创建ClassB对象时,它将被包装在ES6代理中,当ClassB属性更改时(this.b.name = “222222”),该代码将修改通知到@ObjectLink变量。
具体内容可参考常见问题:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-observed-and-objectlink-V5#在子组件中给objectlink装饰的变量赋值
以下是更改demo: