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
@State isMan: boolean = false; 这句代码有问题,是小写的boolean不是大写的,
更多关于HarmonyOS鸿蒙Next中@state状态发生变化,但是UI不更新的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
正解,
基本信息
这是第一条信息。
这是第二条信息。
这是第三条信息。
有解决的吗?我也有同样的问题
解决了,每个人的问题不太一样,我的是大小写问题,
可能是BUG,请提供下当前手机版本,或者错误日志。
没有任何错误信息,执行也正常,就是状态不改变,
我鸿蒙4的手机,也是一样,,有解决吗?
在HarmonyOS鸿蒙Next中,如果@state
状态发生变化但UI未更新,可能的原因包括:
- 确保
@state
变量已正确绑定到UI组件。 - 检查状态更新是否在
@state
修饰的变量上直接进行,而不是在副本上。 - 确认UI组件使用了
@Observed
或@Link
等修饰器来监听状态变化。 - 确保状态更新在UI线程执行,避免在后台线程直接更新UI。
- 检查组件是否处于活动状态,销毁的组件不会响应状态更新。
建议逐项排查上述问题,确保状态与UI同步更新。