父组件传对象数组子组件接受使用Observed+ObjectLink为什么视图不刷新?

为什么点击不更新视图


import { atype, type } from './Index';

@Entry
@Component
export default struct First {
  @State message: string = 'Hello World';
  @ObjectLink aa: type;

  build() {
    Row() {
      Column() {
        ForEach(this.aa, (item: atype) => {
          Text(item.b.toString()).fontSize(50).fontWeight(FontWeight.Bold).onClick(() => {
            item.b++;
          })
        })
      }.width('100%')
    }.height('100%')
  }
} 
阅读 787
1 个回答

在之前用@Component的时候,这种嵌套的属性更新,想要触发视图组件刷新,需要把要更新的属性的对象传递给一个自定义组件,并且这个对象要声明为@ObjectLink,这种在更多层嵌套的情况下,会很不友好,要一层层的子组件去创建。

官方后续出的@ComponentV2,可以通过搭配@ObservedV2声明类,通过@Trace去声明属性,可以不需要再建子组件了,可以直接在父组件修改嵌套属性的值,也能触发刷新了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题