HarmonyOS 鸿蒙Next 嵌套一层的数组无法监听相同数据增加,但是无嵌套的数组可以监听相同数据增加

发布于 1周前 作者 gougou168 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 嵌套一层的数组无法监听相同数据增加,但是无嵌套的数组可以监听相同数据增加

在实例中的数组如何能够监听相同数据的增加?

export class RequestData{
  data1?:string = undefined

  data2?:RequestData2 = undefined

  data5:Array<RequestData4> = []
}

export class RequestData2{
  data3?:string =undefined

  data4?:RequestData3
}

export class RequestData3{
  data5:Array<RequestData4> = []
}

export class RequestData4{
  constructor(data:string) {
    this.data6 = data
  }
  data6:string = ""
}


@Entry
@Component
export struct textRequestView {
  @State dataList: Array<string> = []
  @State dataObject: Array<RequestData> = []
  @State data: RequestData = new RequestData()

  aboutToAppear(): void {
    this.data.data1 = "normal data1"
    this.data.data5 = []
    this.data.data2 = new RequestData2()
    this.data.data2.data3 = "normal data3"
    this.data.data2.data4 = new RequestData3()
  }

  build() {
    Column() {

      Text("list数据:\n" + JSON.stringify(this.dataList) ?? "2333").padding(10).fontColor(Color.Black)
      Text("listObj数据:\n" + JSON.stringify(this.dataObject) ?? "2333").padding(10).fontColor(Color.Black)

      Text("原生数据:\n" + JSON.stringify(this.data?.data5) ?? "2333").padding(10).fontColor(Color.Black)

      Text("点击更新新建的变量").onClick(() => {
        if (this.dataList != undefined) {
          this.dataList.push("这是list变化")
        }

        if (this.dataObject != undefined) {
          let temp = new RequestData()
          temp.data1 = "这是dataObject变化"
          this.dataObject.push(temp)
        }

        if (this.data != undefined) {
          this.data.data1 = "这是原生变化"
          this.data.data5.push(new RequestData4("这是原生变化"))
          console.log("原生变化" + JSON.stringify(this.data.data5))
        }
      }).padding(10).backgroundColor(Color.Pink)
    }
  }
}

更多关于HarmonyOS 鸿蒙Next 嵌套一层的数组无法监听相同数据增加,但是无嵌套的数组可以监听相同数据增加的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复
ArkUI的变化是与[@State](/user/State)的变量有关系的,嵌套数组里数据是已经发生变化了,但是UI监听不到深层的,这边建议修改对应代码

更多关于HarmonyOS 鸿蒙Next 嵌套一层的数组无法监听相同数据增加,但是无嵌套的数组可以监听相同数据增加的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS 鸿蒙Next系统中,嵌套一层的数组无法监听相同数据增加的问题,通常与数据绑定和观察者机制的实现细节有关。无嵌套的数组能正常监听是因为其数据结构相对简单,直接操作数组元素时能够触发监听机制。

嵌套数组由于结构复杂,增加相同数据时,可能因内部处理逻辑未正确触发监听器更新。例如,若使用深拷贝而非引用传递更新数据,则原数组监听器可能无法感知变化。此外,监听器绑定可能未正确设置到嵌套数组层级,导致变化无法传递。

针对此问题,需确保:

  • 嵌套数组的数据更新操作正确触发监听。
  • 监听器绑定至嵌套数组的每个层级。
  • 使用引用或正确方式更新数据,避免深拷贝导致监听失效。

开发者应检查数据更新逻辑和监听器绑定代码,确保嵌套数组的变化能被正确捕捉。同时,HarmonyOS提供的API和文档可能包含特定说明,有助于解决此类问题。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部