HarmonyOS 鸿蒙Next【BUG】所有外部条件都一致,变量都一致。使用@State修饰的boolean值,在@Builder中,使用不同的写法,得出的值一直都是true

发布于 1周前 作者 zlyuanteng 来自 鸿蒙OS

HarmonyOS 鸿蒙Next【BUG】所有外部条件都一致,变量都一致。使用@State修饰的boolean值,在@Builder中,使用不同的写法,得出的值一直都是true

定义了isEdit默认值是false

cke_1642.png

页面刚进来,this.isEdit就为true

自定义了RmNavCustomMenu组件作为NavDestination的menus

cke_10124.png

页面刚进来,this.isEdit就为true

cke_149.png

然后我换一种写法,取了一个反
cke_15353.png

cke_18247.png

非常之离谱,我不太理解

6 回复
找到问题了,代码逻辑的问题。TextInput组件赋初值的时候会调用组件onChange函数,然后设置isEdit
偶现的吧,我按照你写的就没出现

你的Builder是放在组件内的还是组件外的呀?

按照你写的 肯定是组件内

那奇怪了,很神奇

在HarmonyOS鸿蒙Next的开发中,针对你提到的关于@State修饰的boolean值在@Builder中行为异常的问题,这通常涉及到组件状态管理和构建过程的内部机制。在鸿蒙系统的组件框架中,@State注解用于声明组件的状态变量,这些变量的变化会触发组件的重新渲染。

当你在@Builder中使用不同的写法对@State修饰的boolean值进行操作时,理论上这些写法应该等效,但如果出现值一直是true的情况,可能是因为在构建或初始化过程中,某个步骤或表达式错误地设置了该状态为true

请检查以下几点:

  1. 确认@Builder中所有涉及该boolean值的表达式是否逻辑正确,无意外赋值。
  2. 检查是否有其他代码(如父组件或生命周期方法)在构建后修改了该状态。
  3. 确认鸿蒙系统的SDK版本是否包含相关已知问题,并考虑升级到最新版本。

如果以上检查均未能解决问题,可能是由于鸿蒙系统框架的深层机制导致。此时,建议直接联系鸿蒙系统的技术支持团队获取专业帮助。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部