HarmonyOS 鸿蒙Next:为什么这样子写,第三个 if 不生效呢?

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

HarmonyOS 鸿蒙Next:为什么这样子写,第三个 if 不生效呢? 我把这里的pageMap里面写成这样,第三个if就不能正确跳转,有大佬可以解答下这是什么问题吗?其它地方我试了一下,没有问题,第三个if换到第二个if位置就能运行,但此时第二个if(交换后变第三个if位置)却不能运行。

代码示例:组件导航 (Navigation)(推荐)-设置组件导航和页面路由-UI开发 (ArkTS声明式开发范式)-ArkUI(方舟UI框架)-应用框架 - 华为HarmonyOS开发者 (huawei.com)

如图:

cke_2447.png


更多关于HarmonyOS 鸿蒙Next:为什么这样子写,第三个 if 不生效呢?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

12 回复

大概率是内部的机制设定导致的,builder函数默认是就一个父容器的,所以你这个写法理论上可能会出错,因为理论上三个if都有可能进,这样会导致出现多个布局,这个时候builder函数就出错了,所以估计鸿蒙内部做了额外处理避免这种问题,要解决你这个问题也不难,在最外层套一个cloumn,把三个if放进去,你试试看对不对

更多关于HarmonyOS 鸿蒙Next:为什么这样子写,第三个 if 不生效呢?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


我用断点试了,三个都会进if里面执行组件,但不会渲染界面。然后,按照你说的这种,第二个if 和第三个if 都不渲染了,只渲染了第一个。

换 if  else 

这个可以正常执行,但我这里比较好奇,为什么第三个if位置写的代码会失效。

清理项目重新构建,检查下路由表有没有配置,然后断点看下有没有走到navPageThree()

我断点试了下,进去了这个函数。

HarmonyOS的分布式文件系统让我在多设备间共享文件变得更加方便。

这个没效果啊。

这么写看着也没啥问题,if else if 更好一点

我也觉得这样写应该没问题,但运行后,第三个if位置的代码执行了,模拟器上却不显示内容。我这里比较好奇,只用if的。

针对帖子标题“HarmonyOS 鸿蒙Next:为什么这样子写,第三个 if 不生效呢?”的问题,这里提供一个可能的解答方向,但不涉及具体的代码实现或语言细节(如Java、C语言等),仅从逻辑和鸿蒙系统特性角度考虑。

在鸿蒙系统中开发应用时,如果遇到条件语句(if)不生效的情况,可能的原因包括但不限于:

  1. 条件表达式错误:检查第三个if语句的条件表达式是否正确书写,确保逻辑上没有错误,比如变量名拼写错误、逻辑运算符使用不当等。

  2. 变量作用域问题:确认在第三个if语句中使用到的变量是否已正确定义且在当前作用域内有效。

  3. 执行流程问题:分析代码的执行流程,确保在到达第三个if语句之前,程序没有通过其他条件分支(如return、break、continue等)提前退出或改变了执行路径。

  4. 系统或环境特性:考虑鸿蒙系统的特定行为或限制是否影响了if语句的执行。例如,某些系统调用或资源限制可能导致代码行为异常。

如果以上检查均未能解决问题,可能是由于更复杂的逻辑错误或系统特性导致。此时,建议详细检查代码上下文,或使用调试工具逐步执行以定位问题。

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

回到顶部