HarmonyOS鸿蒙Next中底部导航用Tabs组件和Navigation组件的区别?Tabs切换时aboutToAppear只可首次触发,如何实现切换底部时实时获取本地存储数据?
HarmonyOS鸿蒙Next中底部导航用Tabs组件和Navigation组件的区别?Tabs切换时aboutToAppear只可首次触发,如何实现切换底部时实时获取本地存储数据? 底部导航用Tabs组件和Navigation组件的区别?Tabs切换时aboutToAppear只可首次触发,如何实现切换底部时实时获取本地存储数据?
1、Navigation:Navigation组件一般作为页面的根容器,包括单页面、分栏和自适应三种显示模式。Navigation组件适用于模块内页面切换,一次开发,多端部署场景。
Tabs:当页面信息较多时,为了让用户能够聚焦于当前显示的内容,需要对页面内容进行分类,提高页面空间利用率。Tabs组件可以在一个页面内快速实现视图内容的切换,一方面提升查找信息的效率,另一方面精简用户单次获取到的信息量。
详细资料查看Tabs-导航与切换-ArkTS组件-ArkUI(方舟UI框架)-应用框架 - 华为HarmonyOS开发者
2、tab里面目前包含的组件页面没有独立的生命周期类似fragmenttab切换,tabs整个组件会被视为一个page,具体的生命周期是和当前的page同步 可以在tabs的onChange监听index的变化,判断是那个页面显示或隐藏,做相应的业务处理
更多关于HarmonyOS鸿蒙Next中底部导航用Tabs组件和Navigation组件的区别?Tabs切换时aboutToAppear只可首次触发,如何实现切换底部时实时获取本地存储数据?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
import { hilog } from '@kit.PerformanceAnalysisKit'
@ComponentV2
struct Index {
build() {
Tabs() {
TabContent() {
TabA()
}.tabBar('A')
TabContent() {
Column() {
}.size({ width: '100%', height: '100%' })
.backgroundColor(Color.Red)
}.tabBar('Color')
}
}
}
@ComponentV2
struct TabA {
private isHide: boolean = true
build() {
Column() {
Text('123')
}.size({ width: '100%', height: '100%' })
.onVisibleAreaChange([0, 1.0], (isExpanding: boolean, currentRatio: number) => {
if (isExpanding && currentRatio == 1 && this.isHide) {
this.isHide = false
hilog.debug(0x000000, 'rainrain', 'isShow')
} else if (!isExpanding && currentRatio == 0) {
this.isHide = true
}
})
}
}
在HarmonyOS鸿蒙Next中,Tabs组件和Navigation组件都可用于实现底部导航,但它们在功能和用法上有明显区别。
Tabs组件:Tabs组件主要用于实现标签页切换,适合在同一页面内展示多个子页面。它通过标签栏进行页面切换,切换时不会重新创建页面实例,因此aboutToAppear
生命周期函数只在首次加载时触发。若要在切换标签时实时获取本地存储数据,可以通过监听onChange
事件手动触发数据更新。
Navigation组件:Navigation组件则用于实现页面导航,适合在不同页面之间进行跳转。它通过路由机制管理页面栈,每次导航到新页面时会触发aboutToAppear
生命周期函数。因此,在切换底部导航时,Navigation组件可以自动触发aboutToAppear
,从而实时获取本地存储数据。
总结:Tabs组件适合同一页面内的标签切换,aboutToAppear
只触发一次,需手动监听切换事件更新数据;Navigation组件适合页面间导航,aboutToAppear
在每次导航时触发,可直接获取最新数据。
在HarmonyOS鸿蒙Next中,Tabs
组件用于显示底部导航栏,适合简单的页面切换,而Navigation
组件则提供了更强大的页面导航能力,支持复杂的路由管理。Tabs
切换时,aboutToAppear
仅在首次进入页面时触发。若要实现切换底部时实时获取本地存储数据,可以在onPageShow
生命周期回调中处理数据获取逻辑,该回调在每次页面显示时都会触发,确保数据实时更新。