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('数据变化')
}
  • 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.

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

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

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

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

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

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