HarmonyOS 鸿蒙Next控制组件是否显示逻辑
HarmonyOS 鸿蒙Next控制组件是否显示逻辑
问题:现在有多个组件,想通过if else判断语句控制组件是否显示 if else判断的逻辑是根据currentIndex等于多少来显示对应的组件,但是通过if else来显示某个组件,会导致已经加载过的组件会被销毁并且重新创建(abouttoDisappea每次都会重新执行)
需求:又没有什么办法,可以让组件不会被销毁重新创建呢
楼主您好,
if控制组件的显隐是会这样的,它是创建和销毁,生命周期会重新触发的。建议使用通用属性中的visibility属性。显隐控制-通用属性-组件通用信息-基于ArkTS的声明式开发范式-ArkTS组件-ArkUI API参考-应用框架 | 华为开发者联盟 (huawei.com)
@Entry
@Component
struct Page027 {
@State isShow: boolean = true
build() {
Column() {
Button('显示/隐藏').onClick(() => {
this.isShow = !this.isShow
})
Text('测试').visibility(this.isShow ? Visibility.Visible : Visibility.None)
}
.width('100%')
.height('100%')
}
}
visibility
在HarmonyOS鸿蒙Next中,控制组件是否显示的逻辑主要通过条件渲染和显隐控制两种方式实现。
条件渲染是ArkUI应用开发框架提供的渲染控制能力之一。它根据应用的不同状态,渲染对应分支下的UI描述。页面初始构建时会评估条件语句,构建适用分支的组件;应用状态变化时,会重新评估条件语句,删除不适用分支的组件,构建适用分支的组件。
显隐控制则是通过设置组件的visibility属性来控制组件的显隐状态。开发者可以通过设置visibility属性值为Visibility.Visible或Visibility.None,来控制组件的显示和隐藏。
选择哪种方式取决于具体场景。如果组件频繁地在显示和隐藏间切换,建议使用显隐控制,以避免组件的频繁创建与销毁,提升性能。如果组件初始不需要显示,或不会较频繁地在显示和隐藏间切换,建议使用条件渲染,以减少渲染时间、界面复杂度及嵌套层次,从而提升性能。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。