HarmonyOS 鸿蒙Next组件通过if条件渲染或visibility显隐控制,性能上如何选择

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

HarmonyOS 鸿蒙Next组件通过if条件渲染或visibility显隐控制,性能上如何选择 组件通过if条件渲染或visibility显隐控制,性能上如何选择

4 回复

可以通过if条件渲染或visibility显隐控制,实现组件的展示和隐藏状态的切换,两者的作用方式区别如下:

  • 只有在满足条件时,组件才会被创建。
  • 条件不满足时,组件会被销毁,不会挂载在组件树上。

通过visibility进行显隐控制,根据参数值,控制当前组件显示或隐藏:

  • 初始时,无论是否显示,组件都会被创建。
  • 隐藏时,组件不会被销毁,会继续挂载在组件树上,只是状态为不可见。

场景选择

关于if条件渲染或visibility显隐控制,实现组件的展示和隐藏状态的切换,两者的优势场景分别如下:

显隐控制的优势场景:

  • 如果组件动效占用较多、频繁地在展示和隐藏间切换时,建议使用显隐控制替代条件渲染,以避免组件的频繁创建与销毁,提升性能。详细使用场景,请参考《优化布局性能》。

条件渲染的优势场景:

  • 在应用冷启动阶段,应用加载绘制首页时,如果组件初始不需要显示,建议使用条件渲染替代显隐控制,以减少渲染时间,加快启动速度。详细使用场景,请参考《应用冷启动与加载绘制首页》。
  • 如果组件动效占用较少或无动效、不会较频繁地在展示和隐藏间切换,或者大部分时间不需要显示,建议使用条件渲染替代显隐控制,以减少界面复杂度、减少嵌套层次,提升性能。
  • 如果被控制的组件所占内存庞大,开发者优先考虑内存时,建议使用条件渲染替代显隐控制,以即时销毁不需要显示的组件,节省内存。

针对反复切换条件渲染的控制分支的情况,且控制分支中的组件子树结构比较复杂,建议使用组件复用机制,提升应用性能。详细使用场景,请参考《组件复用实践》。

针对反复切换条件渲染的控制分支,但切换项仅涉及页面中少部分组件的情况,建议精准控制组件更新的范围,例如使用容器限制刷新范围,提升应用性能。详细使用场景,请参考《提升应用响应速度》。

更多关于HarmonyOS 鸿蒙Next组件通过if条件渲染或visibility显隐控制,性能上如何选择的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


visibility隐藏后组件好像还会占位吧,这两个使用场景不太一样,比如说展开详情这种功能还是用if渲染控制比较好,

if渲染,状态是未保存的。好像是重新加载的。有性能浪费。其实可以用Tab隐藏TabTitle来当容器。这样每个tab只加载一次。也可以用NodeContainer来判断,

在HarmonyOS鸿蒙系统中,对于Next组件通过if条件渲染或visibility显隐控制的选择,性能上主要考虑以下几点:

  1. if条件渲染

    • 这种方式通常在组件的初始化阶段就决定是否渲染该组件。
    • 如果条件不满足,则不会创建和渲染该组件,从而节省资源。
    • 适用于组件的显示状态在较长时间内不会改变的场景,因为频繁的条件变化会导致组件的重复创建和销毁,增加性能开销。
  2. visibility显隐控制

    • 通过设置组件的可见性来控制其显示和隐藏。
    • 组件在初始化时仍会被创建和渲染,只是根据visibility属性来决定是否显示。
    • 适用于组件的显示状态频繁变化的场景,因为这种方式避免了组件的重复创建和销毁,减少了性能开销。

综上所述,如果组件的显示状态在较长时间内不会改变,建议使用if条件渲染来节省资源;如果组件的显示状态需要频繁变化,建议使用visibility显隐控制来减少性能开销。

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

回到顶部