首页 > 其他分享 >HarmonyOS NEXT应用开发——Navigation开发 页面切换场景范例

HarmonyOS NEXT应用开发——Navigation开发 页面切换场景范例

时间:2024-04-13 20:00:47浏览次数:24  
标签:name NavDestination NEXT HarmonyOS 跳转 Navigation 路由 页面

简介

在应用开发时,我们常常遇到,需要在应用内多页面跳转场景时中使用Navigation导航组件做统一的页面跳转管理,它提供了一系列属性方法来设置页面的标题栏、工具栏以及菜单栏的各种展示样式。除此之外还拥有动态加载,navPathStack路由跳转。

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

场景概述

ArkUI中,应用内导航组件Navigation一般作为Page页面的根容器, Navigation组件主要包含主页和内容页。
主页内容区默认首页显示导航内容(Navigation的子组件) 或非首页显示(NavDestination的子组件),首页和非首页通过路由进行切换。
Navigation的路由切换的方式有两种,本次示例主要介绍NavPathStack的使用。

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

通过本篇文章的学习,你将学会:
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()

实现思路

通过this.pageStack.pushPath({ name: url param: item })进行页面之间的跳转,navpathstack详情。

开发步骤

通过onclick事件调用NavPathStack.pushPath方法跳转页面。源码参考MainPage.ets

Column()
  .onClick(() => {
    this.pageStack.pushPath({ name: listData.moduleName, param: listData.param });
  })

标签:name,NavDestination,NEXT,HarmonyOS,跳转,Navigation,路由,页面
From: https://www.cnblogs.com/HarmonyOSNext/p/18133300

相关文章

  • HarmonyOS-基础之页面跳转
    1、配置页面路由信息resources-->base-->profile-->main_pages.json{"src":["pages/demo03/Index","pages/demo03/Detail"]}2、编写页面组件Index.ets/***路由跳转*-使用鸿蒙内置的router*/importrouterfrom'......
  • 通俗易懂的KMP理论讲解(含手求Next数组)
    通俗易懂的KMP理论讲解(含手求Next数组)1.KMP算法介绍KMP算法的核心是利用匹配失败后的信息,通过一个next数组,保存模式串中前后最长公共子序列的长度,尽量减少模式串与主串的匹配次数降低时间复杂度以达到快速匹配的目的。2.字符串的前后缀与公共前后缀2.1字符串的前缀字符串的......
  • HarmonyOS-基础之联系人案例
    使用前面学习的相关组件和api实现联系人的CRUD;效果如下父组件import{Contacts}from'../domain/Model'importContactsItemfrom'../components/ContactsItem'@Entry@ComponentstructContactsExample{//联系人数组@StatecontactsArr:Contacts[]=[......
  • 鸿蒙HarmonyOS实战-ArkUI组件(页面路由)
    ......
  • 鸿蒙HarmonyOS实战-ArkUI组件(Menu)
    ......
  • 鸿蒙开发人才紧缺!这些项目帮你快速上手HarmonyOS!
    去年9月,华为宣布鸿蒙原生应用全面启动,基于开源鸿蒙开发的HarmonyOSNEXT鸿蒙星河版将在今年秋天正式和消费者见面。该版本系统底座将由华为全线自研,去掉传统安卓AOSP代码。这意味着,鸿蒙星河版将不再兼容安卓应用,京东、淘宝、得物、美团、微博、小红书等上百款应用也相......
  • HarmonyOs开发之———页签切换、组件状态管理
    谢谢关注!!前言:上一篇文章主要介绍HarmonyOs开发之———容器组件使用 http://t.csdnimg.cn/r9Qd1一、Tabs组件页签切换1、在HarmonyOS中,页签切换可以使用TabList组件来实现。TabList允许你创建多个页签,并在切换时显示不同的内容。以下是一个页签切换的示例代码:创建了一个......
  • nextJs中使用styled-jsx
    NextJs不支持直接在页面和组件里importCss这种引入方式(除了全局引入),但是可以使用styled-jsx的方式进行Css的样式定义,也可以实现样式加载NextJs中Css的几种使用方案: global全局引入:在main文件或者app.js/ts文件里面进行全局引入,这种只是适合全局作用的样式引入。例如:im......
  • HarmonyOS 开发-阻塞事件冒泡
    介绍本示例主要介绍在点击事件中,子组件enabled属性设置为false的时候,如何解决点击子组件模块区域会触发父组件的点击事件问题;以及触摸事件中当子组件触发触摸事件的时候,父组件如果设置触摸事件的话,如何解决父组件也会被触发的问题。效果图预览使用说明:开启使能开关,在点击事......
  • HarmonyOS 开发-二级联动
    介绍本示例主要介绍了List组件实现二级联动(CascadingList)的场景。该场景多用于短视频中拍摄风格的选择、照片编辑时的场景的选择。效果图预览blogs.com/blog/3424627/202404/3424627-20240410171735450-1800285526.png)使用说明:滑动二级列表侧控件,一级列表随之滚动。点......