HarmonyOS @Watch 如何检测数组内元素变化

@State @Watch('dataChange') settingAllGroups: CommonListView.GroupModel[] = [
  {
    groupDataList: [
      {
        icon: $r("app.media.safe_setting_gesture"),
        title: "手势密码开关",
        style: CommonListView.CellStyle.SwitchButton,
        switchValue: this.gestureOpened
      }
    ]
  },
  {
    groupDataList: [
      {
        icon: $r("app.media.safe_setting_soft_certification_manager"),
        title: "软证书管理"
      }
    ]
  }
]

dataChange() {

  Logger.error('数据变化')
}

我这里新增groupDataList内数据,dataChange方法未发生调用,怎么可以监听groupDataList内的变化

HarmonyOS
2024-12-24 15:39:49
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
FengTianYa

目前还是通过数据驱动的方式刷新,没有提供手动刷新的方法。因为对象嵌套的比较深,使用@State的话是监听不到一些操作的,可以使用splice的方式,是变相实现了一个可以让@State感知到的变化,示例如下:

//原来是这一句代码:
this.settingAllGroups[0].groupDataList = updatedArray
//替换成下面的方式:
this.settingAllGroups.splice(0,1,{
  groupDataList :updatedArray
})

还可以看一下嵌套类对象属性变化,使用其他方式去定义:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-observed-and-objectlink-V5

分享
微博
QQ
微信
回复
2024-12-24 17:59:28
相关问题
如何监听数组对象属性变化
2569浏览 • 1回复 待解决
readonly修饰的数组无法获取数组元素
2319浏览 • 1回复 待解决
HarmonyOS 使用@Watch观察值变化问题
97浏览 • 1回复 待解决
HarmonyOS 怎么获取watch变化之前的数据
108浏览 • 1回复 待解决
数组元素变更如何触发刷新list?
488浏览 • 1回复 待解决
HarmonyOS 对象数组排序问题
212浏览 • 1回复 待解决