HarmonyOS鸿蒙Next中@state状态发生变化,但是UI不更新

HarmonyOS鸿蒙Next中@state状态发生变化,但是UI不更新

@State var isMan: Boolean = false;




build() {
  Column() {

Row() { Text(“性别”).margin(left: 15).fontColor(0x333333).fontSize(15) Blank().width(4) Button(stateEffect: true) { Row() { Image(this.isMan ? $r(‘app.media.man_yes’) : $r(‘app.media.man_no’)).width(16).height(16) Text(“男”).margin(left: 5).fontColor(this.isMan ? 0xFF1FC926 : 0x999999).fontSize(15) } } .backgroundColor(0xffffff) .borderRadius(5) .borderWidth(1) .borderColor(this.isMan ? 0xFF1FC926 : 0x999999) .width(58) .height(25) .padding(left: 2, right: 3) .onClick { self.isMan = true Logger.error(“east”, “this.isMan = true”) } .margin(right: 15)

Button(stateEffect: true) { Row() { Image(this.isMan ? $r(‘app.media.women_no’) : $r(‘app.media.women_yes’)).width(16).height(16) Text(“女”).margin(left: 5).fontColor(this.isMan ? 0x999999 : 0xFF1FC926 ).fontSize(15) } } .backgroundColor(0xffffff) .borderRadius(5) .borderWidth(1) .borderColor(this.isMan ? 0x999999 : 0xFF1FC926 ) .width(58) .height(25) .padding(left: 2, right: 3) .onClick { self.isMan = false Logger.error(“east”, “this.isMan = false”) } .margin(right: 15) } .width(‘100%’) .height(48) .justifyContent(FlexAlign.SpaceBetween) .alignItems(VerticalAlign.Center) .backgroundColor(0xffffff)


我定义了一个[@state](/user/state)布尔类型是变量,当我点击button时修改变量值,UI没有更新,但是事件有触发,变量值有改变,这是为啥呢

更多关于HarmonyOS鸿蒙Next中@state状态发生变化,但是UI不更新的实战教程也可以访问 https://www.itying.com/category-93-b0.html

11 回复

@State isMan: boolean = false; 这句代码有问题,是小写的boolean不是大写的,

更多关于HarmonyOS鸿蒙Next中@state状态发生变化,但是UI不更新的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


正解,

基本信息

这是第一条信息。

这是第二条信息。

这是第三条信息。

细心啊,

有解决的吗?我也有同样的问题

解决了,每个人的问题不太一样,我的是大小写问题,

可能是BUG,请提供下当前手机版本,或者错误日志。

我使用的是模拟器,

基本信息
姓名: 张三
职业: 软件工程师
技能: Python, Java, C++

联系信息
邮箱: zhangsan@example.com
电话: 1234567890

没有任何错误信息,执行也正常,就是状态不改变,

我鸿蒙4的手机,也是一样,,有解决吗?

在HarmonyOS鸿蒙Next中,如果@state状态发生变化但UI未更新,可能的原因包括:

  1. 确保@state变量已正确绑定到UI组件。
  2. 检查状态更新是否在@state修饰的变量上直接进行,而不是在副本上。
  3. 确认UI组件使用了@Observed@Link等修饰器来监听状态变化。
  4. 确保状态更新在UI线程执行,避免在后台线程直接更新UI。
  5. 检查组件是否处于活动状态,销毁的组件不会响应状态更新。

建议逐项排查上述问题,确保状态与UI同步更新。

回到顶部