HarmonyOS @State ArrayList,list.add方法执行之后,是否会动态刷新相关引用地方的数据

HarmonyOS
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Excelsior_abit

foreach的数组没有发生改变,所以没有触发list组件的ui刷新,可使用@Observed装饰器和@ObjectLink装饰器实现。

参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-observed-and-objectlink-V5#%E5%AF%B9%E8%B1%A1%E6%95%B0%E7%BB%84

示例参考:

@Observed
class Tags {
  title: string = ''
  flag: boolean = false
  constructor(title: string, flag: boolean) {
    this.title = title
    this.flag = false
  }
}

@Component
struct TextTest {
  @ObjectLink item: Tags

  build() {
    Column() {
      Text(this.item.title)
        .fontColor(this.item.flag ? Color.Red : Color.Black)
        .onClick(() => {
          if (this.item.flag) {
            this.item.flag = false
          } else {
            this.item.flag = true
          }
        })
    }
  }
}

@Entry
@Component
struct Index {
  @State list: Array<Tags> = [new Tags('我的', false), new Tags('你的', false)]

  build() {
    Column() {
      List() {
        ForEach(this.list, (item: Tags, Index: number) => {
          ListItem() {
            TextTest({ item: item })
          }
        }, (item: string) => JSON.stringify(item))
      }
    }.width('100%').height('50%')
  }
}
分享
微博
QQ
微信
回复
1天前
相关问题
HarmonyOS List组件动态刷新数据问题
1057浏览 • 1回复 待解决
HarmonyOS Scroll回调方法执行改变
37浏览 • 1回复 待解决
HarmonyOS " @State可以修饰ArrayList吗"
410浏览 • 1回复 待解决
如何通过AOP统计方法执行时间
673浏览 • 1回复 待解决
DevEco无法执行Previewer
612浏览 • 1回复 待解决
HarmonyOS List怎么刷新数据
51浏览 • 1回复 待解决
HarmonyOS list数据刷新,头像闪烁
40浏览 • 1回复 待解决
HarmonyOS asset运行add方法时报错
361浏览 • 1回复 待解决
ForEach在真机上无法执行
1907浏览 • 1回复 待解决
listadd跟remove item入场、出场动画
1316浏览 • 1回复 待解决
HarmonyOS ArrayList有addAll方法
14浏览 • 1回复 待解决
HarmonyOS @ObjectLink和@State相关疑问
297浏览 • 1回复 待解决
HarmonyOS 是否有种主动刷新UI方法
40浏览 • 1回复 待解决
HarmonyOSList组件是否支持局部刷新
638浏览 • 1回复 待解决