HarmonyOS鸿蒙Next中自定义组件被设置为Visibility.None或Visibility.Hidden时,依旧触发aboutToAppear
HarmonyOS鸿蒙Next中自定义组件被设置为Visibility.None或Visibility.Hidden时,依旧触发aboutToAppear
"@Entry @Component struct Index { @State message: string = ‘Hello World’; build() { Column() { Custom1().visibility(Visibility.None) Custom2().visibility(Visibility.Hidden) } .height(‘100%’) .width(‘100%’) } }
@Component struct Custom1 { build() { Text(‘1’) } aboutToAppear(): void { console.log(‘1’) } }
@Component struct Custom2 { build() { Text(‘2’) } aboutToAppear(): void { console.log(‘2’) } }
在API12 beta3中有以上代码, 问题1: 自定义组件被设置为Visibility.None或Visibility.Hidden时,依旧触发aboutToAppear,按照文档(关于自定义组件生命周期),aboutToAppear应该在组件即将出现时回调该接口,但现在组件处于不可见状态,为什么还会被触发? 问题2: 不依赖外部传入属性,自定义组件如何获取到当前自身的可见状态 问题3: 不依赖外部传入属性,自定义组件如何观察到自身可见状态的变化 "
更多关于HarmonyOS鸿蒙Next中自定义组件被设置为Visibility.None或Visibility.Hidden时,依旧触发aboutToAppear的实战教程也可以访问 https://www.itying.com/category-93-b0.html
通过visibility进行显隐控制,根据参数值,控制当前组件显示或隐藏:
初始时,无论是否显示,组件都会被创建。
隐藏时,组件不会被销毁,会继续挂载在组件树上,只是状态为不可见。
- 通过visibility进行显隐控制,根据参数值,控制当前组件显示或隐藏:
初始时,无论是否显示,组件都会被创建。
隐藏时,组件不会被销毁,会继续挂载在组件树上,只是状态为不可见。
-
通过onVisibleAreaChange,可获取到组件的可见状态
-
通过onVisibleAreaChange可观察到自身可见状态的变化
更多关于HarmonyOS鸿蒙Next中自定义组件被设置为Visibility.None或Visibility.Hidden时,依旧触发aboutToAppear的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
aboutToAppear:组件即将出现时回调该接口,具体时机为在创建自定义组件的新实例后,在执行其build()函数之前执行
visibility就算是hidden 组件也创建了,组件只是看不见,不是没有被创建
我觉得你应该使用if进行条件渲染
在HarmonyOS鸿蒙Next中,当自定义组件的Visibility属性被设置为Visibility.None或Visibility.Hidden时,aboutToAppear生命周期回调仍会被触发。这是因为aboutToAppear是在组件即将进入可见状态之前调用的,而Visibility.None或Visibility.Hidden仅影响组件的渲染和布局,并不影响生命周期的执行。因此,即使组件不可见,aboutToAppear仍会按照生命周期流程执行。
在HarmonyOS鸿蒙Next中,自定义组件被设置为Visibility.None或Visibility.Hidden时,aboutToAppear生命周期回调仍然会被触发。这是因为aboutToAppear是在组件即将显示时调用的,无论其可见性如何。如果需要避免在这种情况下的逻辑执行,可以在aboutToAppear中手动检查组件的可见性状态,并根据条件执行相应操作。例如,使用if语句判断Visibility属性,确保仅在组件可见时执行特定逻辑。

