@Builder参数值改变UI没有刷新问题,代码如下,点击按钮“年龄+1”,年龄数值并没有发生改变,是什么原因呢

@Builder参数值改变UI没有刷新问题,代码如下,点击按钮“年龄+1”,年龄数值并没有发生改变,是什么原因导致的?

HarmonyOS
2024-07-11 11:07:16
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
lovingkane
class Student {
  age: number = 0

  constructor(age: number) {
    this.age = age
  }
}
@Component
export struct Component19 {
  @State student: Student = new Student(20)

  build() {
    Column() {
      this.StudentBuilder(this.student)
    }.width("100%")
    .padding(10)
  }

  @Builder
  StudentBuilder(student: Student) {
    Text(student.age + "")
    Button("年龄+1").onClick(() => {
      student.age++
    })
  }
}

@Builder修饰的函数内部,不允许改变参数值。代码应该改一下,改成如下代码可以解决问题。

class Student {
  age: number = 0

  constructor(age: number) {
    this.age = age
  }
}

@Component
export struct Component19 {
  @State student: Student = new Student(20)

  build() {
    Column() {
      this.StudentBuilder()
    }.width("100%")
    .padding(10)
  }

  @Builder
  StudentBuilder() {
    Text(this.student.age + "")
    Button("年龄+1").onClick(() => {
      this.student.age++
    })
  }
}
分享
微博
QQ
微信
回复
2024-07-12 09:59:48
相关问题
ForEach数组发生改变UI刷新
368浏览 • 1回复 待解决
如下代码报错,报错原因是什么
315浏览 • 1回复 待解决
HarmonyOS UI刷新问题
303浏览 • 0回复 待解决
地图定位不准,是什么原因啊?
195浏览 • 1回复 待解决
ForEach无法遍历全部数据,是什么原因
1801浏览 • 1回复 待解决