鸿蒙next开发:Navigation页面切换场景范例和预渲染实现Web页面瞬开实践

简介

在应用开发中存在大量应用内多页面跳转场景,使用Navigation导航组件做统一的页面跳转管理,Navigation组件提供一系列属性方法来设置页面的标题栏、工具栏以及菜单栏的展示样式。还支持动态加载,navPathStack路由跳转等能力。

本文就以Navigation页面切换为例,展开讲解Navigation以上的技术点,帮助开发者快速学习。

场景概述

导航组件Navigation一般作为Page页面的根容器,Navigation组件可以作为首页和内容页的容器。首页显示Navigation的子组件,内容页显示NavDestination的子组件,主页和内容页通过路由进行切换。
Navigation的路由切换的方式有两种:

  • 在API Version 9上,首页导航内容需要配合NavRouter组件实现页面路由。
  • 从API Version 10开始,首页推荐使用NavPathStack配合NavDestination属性进行页面路由。

本次示例主要介绍NavPathStack的使用。

导航组件Navigation还可以通过mode属性实现多设备适配,具体请参考MULTIDEVICE_ADAPTATION.md

通过本篇文章的学习,你将学会:
1.如何使用NavPathStack路由转场
2.如何在Navigation中跨包引用hsp
3.如何在Navigation中使用动态加载

Router与Navigation适用场景对比

组件 适用场景 特点 转场动画效果对比
Router 模块间与模块内页面切换 通过每个页面的url实现模块间解耦 页面平推转场效果
Navigation 模块内页面切换 通过组件级路由统一路由管理 向右折叠转场效果

使用NavPathStack路由转场

  • NavPathStack有两种路由切换方法,一种是pushPath,如首页---->设置页面,通过使用this.pageStack.pushPath({ name: url })进行跳转;另外一种是pushPathByName,如首页---->详情页面,通过使用this.pageStack.pushPathByName(name, item)进行跳转,其中item为需要传递的参数。

  • NavPathStack支持pop、move、clear方法的使用;pop方法的作用是弹出路由栈栈顶元素,如首页进入商品详情页面,在详情页面使用this.pageStack.pop()方法返回到首页,clear方法的作用是清除栈中所有页面, 如首页跳转到详情页面,详情页面再进入直播页面,在直播页面通过使用this.pageStack.clear()直接返回到首页。除此之外,还有popTo(回退路由栈到第一个名为name的NavDestination页面)、 popToIndex(回退路由栈到index指定的NavDestination页面)、moveToTop(将第一个名为name的NavDestination页面移到栈顶)、moveIndexToTop(将index指定的NavDestination页面移到栈顶)方法, 由于本示例暂时没有合适的按钮去承载这些功能,所以本示例未体现。

  • 路由栈信息,如下所示:

    获取栈中所有NavDestination页面的名称:this.pageInfos.getAllPathName()
    获取index指定的NavDestination页面的参数信息:this.pageInfos.getParamByIndex(1)
    获取全部名为name的NavDestination页面的参数信息:this.pageInfos.getParamByName('pageTwo')
    获取全部名为name的NavDestination页面的位置索引:this.pageInfos.getIndexByName('pageOne')
    获取栈大小:this.pageInfos.size()

实现思路

以Navigation组件为基础,通过路由管理实现页面之间的跳转。

开发步骤

Navigation中使用路由跳转页面

  1. 在onClick事件中,调用路由管理中的push方法。源码参考FunctionalScenes.ets

    Column()
      .onClick(() => {
        DynamicsRouter.push(listData.routerInfo, listData.param);
      })
  2. 在DynamicsRouter的push方法中,通过NavPathStack.pushPath方法实现页面的跳转。源码参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值