鸿蒙开发 之 ArkUI路由

在这里插入图片描述

1.页面路由

页面路由是指在应用程序中实现不同页面之间的跳转和数据传递
比如说你打开一个app,首先进入的是登陆页,首页,列表搜索页,详情页,你打开几个页面都会存储在页面栈里,页面栈的最大容量上限为32个,使用router.clear()方法可以清空页面栈,释放内存,开发过程中要注意不要等到上限再清除

Router有两种页面跳转模式分别是
router.pushUrl():目标页不会替换当前页,而是压入页面栈,因此可以用router.back返回当前页 比如 列表页跳详情页
router.replaceUrl():目标页替换当前页,当前页会被销毁并释放资源,无法返回当前页 比如 登陆页

Router有两种页面实例模式,分别是:
standard:标准实例模式,每次跳转都会新建一个目标页并压入栈顶,默认就是这种模式
single:单实例模式,如果目标页已经在栈中,则离栈顶最近的同url页面会被移动到栈顶并重新加载

2.使用方法

2.1 导入HarmonyOS提供的Router模块

//固定写法
import router from "@ohos.router";

2.2 使用router

router.pushUrl(
{url:'pages/Imagepage',params:{id:1}
},
router.RouterMode.Single,//页面模式RouterMode枚举
err=>{if(err){//100001:内部错误可能是渲染失败//100002:路由地址错误//100003:路由栈中页面超过32console.log('路由失败')}
}
)//路由取值
params:any=router.getParams()
//返回上一页
router.back()
//返回指定页并携带参数
router.back({url:'page/index',params:{id:10}
})

3.案例

import RouterInfo from '../viewmodel/RouterInfo'
import IndexFontSizePanel from '../views/IndexFontSizePanel'
import RouterItem from '../views/RouterItem'
import PreferencesUtil from '../common/util/PreferencesUtil'const routers: RouterInfo[] = [new RouterInfo('pages/ImagePage', '图片查看案例'),new RouterInfo('pages/ItemPage', '商品列表案例'),new RouterInfo('pages/StatePage', 'Jack和他的女友案例'),new RouterInfo('pages/PropPage', '任务列表案例'),new RouterInfo('pages/AnimationPage', '小鱼动画案例按钮版'),new RouterInfo('pages/AnimationPage2', '小鱼动画案例摇杆版'),new RouterInfo('pages/LifeCirclePage', '生命周期案例1'),new RouterInfo('pages/TestPage1', '生命周期案例2'),new RouterInfo('pages/DocumentListPage', 'UIAbility启动模式案例'),
// new RouterInfo('pages/ShopPage', '查询商铺案例'),
//new RouterInfo('pages/TaskManagePage', '任务列表持久化案例'),
]@Entry
@Component
struct Index {@State message: string = '页面列表'@State showPanel: boolean = false@Provide fontSize: number = 16async aboutToAppear() {this.fontSize = await PreferencesUtil.getPreferenceValue('MyPreferences', 'IndexFontSize', 16) as number}build() {Column() {// 顶部标题this.Title()// 导航列表this.RouterList()// 字体修改面板if (this.showPanel) {IndexFontSizePanel().transition({translate: { y: 115 }})}}.width('100%').height('100%')}@BuilderTitle() {Row() {Text(this.message).fontSize(50).fontWeight(FontWeight.Bold).height(80)Image($r('app.media.ic_public_settings')).width(30).onClick(() => {animateTo({ duration: 500, curve: Curve.EaseOut }, () => this.showPanel = !this.showPanel)})}.justifyContent(FlexAlign.SpaceAround).width('100%')}@BuilderRouterList() {List({ space: 15 }) {ForEach(routers,(router, index) => {ListItem() {RouterItem({ r: router, i: index + 1 })}})}.layoutWeight(1).alignListItem(ListItemAlign.Center).width('100%')}
}
//RouterItemimport router from '@ohos.router'
import RouterInfo from '../viewmodel/RouterInfo'@Component
export default struct RouterItem{r: RouterInfoi: number@Consume fontSize: numberbuild(){Row(){Text(this.i + '.').fontSize(this.fontSize).fontColor(Color.White)Blank()Text(this.r.title).fontSize(this.fontSize).fontColor(Color.White)}.width('90%').padding(12).backgroundColor('#38f').borderRadius(20).shadow({radius: 6, color: '#4F000000', offsetX: 2, offsetY: 4}).onClick(() => {// router跳转router.pushUrl({url: this.r.url,params: {id: this.i}},router.RouterMode.Single,err => {if(err){console.log(`路由失败,errCode: ${err.code} errMsg:${err.message}`)}})})}
}
//RouterInfo
export default class RouterInfo{// 页面路径url: string// 页面标题title: stringconstructor(url: string, title: string) {this.url = url;this.title = title}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/22683.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在Oracle VM virtual box 中复制 CentOS 7虚拟机更改IP地址的操作

最近玩Redis主从复制的时候,我装了一个虚拟机,但主从复制需要准备3个虚拟机,这个时候,我又不想一个一个去装,我看到Oracle VM virtual box提供了一个虚拟机复制操作,于是就用了一下这个功能,发现…

云原生时代:从 Jenkins 到 Argo Workflows,构建高效 CI Pipeline

作者:蔡靖 Argo Workflows Argo Workflows [ 1] 是用于在 Kubernetes 上编排 Job 的开源的云原生工作流引擎。可以轻松自动化和管理 Kubernetes 上的复杂工作流程。适用于各种场景,包括定时任务、机器学习、ETL 和数据分析、模型训练、数据流 pipline、…

【成品设计】基于STC15F104W的互补PWM输出器

《基于STC15F104W的互补PWM输出器》 1.所需器件: (1)单片机:STC15F104W。 ①最小系统板链接:【淘宝】https://m.tb.cn/h.5WnLl9X?tkqSGrdCWm0PW「STC15F104W STC15W204S单片机模块 系统板 核心板 学习板 开发板」点击链接直接打开 或者 淘宝…

HCIP-Datacom-ARST自选题库__多种协议简答【11道题】

1.BGP/MPLSIP VPN的典型组网场景如图所示,PE1和PE2通过LoopbackO建立MP-IBGP,PE1和PE2之间只传递VPN路由,其中PE1BGP进程的部分配置已在图中标出,则编号为0的命令不是必须的。(填写阿拉伯数字) 3 2.在如图所示的Hub&Spok…

【Java】数据加密

目录 数据加密介绍使用场景密码学历史古代密码学凯撒密码例子特点 维吉尼亚密码原理例子特点 现代密码学介绍 现代密码学的加密算法分类哈希算法优点缺点代码示例【封装写法】 对称加密算法对称加密算法的加密过程解密过程对称加密算法的优点:对称加密算法的缺点&am…

【初识Objective-C】

Objective-C学习 什么是OCOC的特性OC跑的第一个程序helloworld OC的一些基础知识标识符OC关键字数据类型字符型c字符串为什么NSString类型定义时前面要加和普通的c对象有什么区别 一些基础知识if语句switch语句三种循坏语句for循环:用于固定次数的循环while循环&…

低功耗,低噪声 CMOS 轨到轨输入输出运算放大器

产品简述 MS6001/2/4 运算放大器具有极低功耗,轨到轨输入输出,低 的输入电压和低的电流噪声。具体表现在可工作在幅度为 1.8V 到 5V 的单电源或者双电源条件,低功耗和低噪声使得 MS6001/2/4 能够用在可移动设备上,输入输…

低代码/无代码可以降低程序员哪些门槛

低代码/无代码开发平台是一种新兴的软件开发模式,它通过图形化界面、拖拽式操作等方式,快速构建应用程序,从而降低了开发者的准入门槛。这种模式对程序员来说,不仅可以提高开发效率,还可以在某些情况下促进业务人员成为…

目标检测数据集 - 打架检测数据集下载「包含VOC、COCO、YOLO三种格式」

数据集介绍:打架检测数据集,真实监控场景高质量打架图片数据,涉及场景丰富,比如街道场景打架数据、酒吧场景打架数据、商店场景打架数据、公交车场景打架数据、监狱场景打架数据、空旷地打架数据、两人打架数据、多人群殴数据等。…

面试官:如何实现大文件切片上传?

公众号:程序员白特,关注我,每天进步一点点~ 前端上传文件很大时,会出现各种问题,比如连接超时了,网断了,都会导致上传失败,这个时候就需要将文件切片上传,下面我们就来学习一下如何使用vue实现大文件切片上传吧 大文件为什么要切片上传 前端…

【SpringBoot】SpringBoot同时可以处理多少请求

目录 问题Web三大容器三者区别TomcatJetty小结 最大连接数和最大等待数同时处理请求数拓展:设置Web容器设置容器为Jetty设置容器为Undertow 问题 之前看到过一个面试题:SpringBoot同时可以处理多少请求? 准确的来说,Spring Boot…

pycharm绘图时中英文不能同时出现 中文出现小框框的问题解决

# 设置字体为微软雅黑,正确显示负号 plt.rcParams[font.sans-serif] [Microsoft YaHei] plt.rcParams[axes.unicode_minus] False

Python 组合序号

import pandas as pd # 创建一个示例数据框 data { group: [A, A, A, B, B, C, C, C, C], value: [3, 1, 2, 5, 4, 6, 9, 7, 8] } df pd.DataFrame(data) # 先按group分组,再按value列升序排序 df_sorted_asc df.sort_values(by[group, value]) # 使…

如何使用vsCode打开intel D435i深度相机

一、下载并安装相机SDK文件 1.SDK下载地址: Release Intel RealSense™ SDK 2.0 (v2.54.2) IntelRealSense/librealsense GitHub 2.下载后,双击即可安装 3.环境配置 1)window的开始菜单,搜索环境变量,选择编辑系…

LitCTF2024部分wp

litctf wp 第一次ak了web和misc,非常激动,感谢lictf给我这个机会 最终成果 全靠队里的密码逆向✌带飞。一个人就砍了近一半的分数 这里是我们队的wp web exx 题目名反过来就是xxe,考察xxe,查看登录的数据包 发现传的就是xml…

机器学习中的泛化与适应:深入理解域泛化、域适应、少样本学习、零样本学习、开放世界识别与开放词汇识别

机器学习中的泛化与适应:深入理解域泛化、域适应、少样本学习、零样本学习、开放世界识别与开放词汇识别 😎 作者介绍:我是程序员行者孙,一个热爱分享技术的制能工人。计算机本硕,人工制能研究生。公众号:A…

Java Web学习笔记8——表单

表单标签&#xff1a; 场景&#xff1a;在网页中主要负责数据采集功能&#xff0c;如注册、登录等数据采集。 标签&#xff1a;<form> 表单项、表单元素&#xff1a; 不同类型的input元素、下拉列表、文本域等。 <input>: 定义表单项、通过type形式控制输入形…

深入解读Prometheus Adapter:云原生监控的核心组件

一、引言 Prometheus Adapter的背景与重要性 在现代的云原生架构中&#xff0c;微服务和容器化技术得到了广泛的应用。这些技术带来了系统灵活性和扩展性的提升&#xff0c;但同时也增加了系统监控和管理的复杂度。Prometheus作为一款开源的监控系统&#xff0c;因其强大的指标…

有关Qt的调用其他cpp文件出现的小问题

一开始出现了运行mainwindow文件过程调用其他cpp文件&#xff0c;而导致运行的ui界面卡住&#xff0c;后来发现在两个cpp文件中都进行了界面的初始化而导致界面的某些控件二次使用&#xff0c;所以会卡住。 ui->setupUi(this); 在Qt框架中&#xff0c;ui->setupUi(this)…

PPP-B2b精密产品使用注意事项及分析

1、因为在使用PPP-B2b进行定轨的时候&#xff0c;发的精密轨道产品是B3频点的&#xff0c;需要改正的卫星质心&#xff08;Com&#xff09;与SP3精密星历对比。 2、PPP-B2b产品吸收了电离层误差&#xff0c;因此电离层提取方面与IGS电离层完全无法对其。 3、由于PPP-B2b产品精…