HarmonyOS 控件显示或者隐藏,采用if判断或者Visibility.Visible哪个性能更高

控件显示或者隐藏,采用if判断或者Visibility.Visible哪个性能更高

代码片段如下

if (this.isShow) {
  Text('测试文本1')
    .width(100)
    .height(60)
}

Text('测试文本2')
  .width(100)
  .height(60)
  .visibility(this.isShow ? Visibility.Visible : Visibility.Hidden)

Button('点击测试')
  .onClick(() => {
    this.isShow = true;
  })
HarmonyOS
2025-01-09 15:25:02
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Heiang

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

通过if进行条件渲染,其作用方式是满足条件时创建、未满足条件时销毁组件:

只有在满足条件时,组件才会被创建。

条件不满足时,组件会被销毁,不会挂载在组件树上。

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

初始时,无论是否显示,组件都会被创建。

隐藏时,组件不会被销毁,会继续挂载在组件树上,只是状态为不可见。

场景选择

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

显隐控制的优势场景:

如果组件动效占用较多、频繁地在展示和隐藏间切换时,建议使用显隐控制替代条件渲染,以避免组件的频繁创建与销毁,提升性能。

https://gitee.com/openharmony/docs/blob/700d5ac401d773f25d6bce0dd8b1ed22a24e2216/zh-cn/application-dev/performance/reduce-view-nesting-levels.md

条件渲染的优势场景:

在应用冷启动阶段,应用加载绘制首页时,如果组件初始不需要显示,建议使用条件渲染替代显隐控制,以减少渲染时间,加快启动速度。

https://gitee.com/openharmony/docs/blob/700d5ac401d773f25d6bce0dd8b1ed22a24e2216/zh-cn/application-dev/performance/reduce-redundant-operations-when-render-first-frame.md

如果组件动效占用较少或无动效、不会较频繁地在展示和隐藏间切换,或者大部分时间不需要显示,建议使用条件渲染替代显隐控制,以减少界面复杂度、减少嵌套层次,提升性能。

如果被控制的组件所占内存庞大,开发者优先考虑内存时,建议使用条件渲染替代显隐控制,以即时销毁不需要显示的组件,节省内存

分享
微博
QQ
微信
回复
2025-01-09 17:10:36
相关问题
HarmonyOS callback和await哪个性能好?
441浏览 • 1回复 待解决
HarmonyOS Video控件隐藏操作栏
232浏览 • 1回复 待解决
HarmonyOS TabContent控制显示隐藏
294浏览 • 1回复 待解决
HarmonyOS web监听键盘显示隐藏
406浏览 • 1回复 待解决