鸿蒙HarmonyOS教程

您所在的位置:网站首页 鸿蒙系统关掉步数 鸿蒙HarmonyOS教程

鸿蒙HarmonyOS教程

2024-07-12 05:05| 来源: 网络整理| 查看: 265

页面路由指在应用程序中实现不同页面之间的跳转和数据传递。HarmonyOS提供了Router模块,通过不同的url地址,可以方便地进行页面路由,轻松地访问不同的页面。

一、基础使用 Router模块提供了两种跳转模式,分别是router.pushUrl()和router.replaceUrl()。这两种模式决定了目标页面是否会替换当前页。 router.pushUrl():目标页面不会替换当前页,而是压入页面栈。这样可以保留当前页的状态,并且可以通过返回键或者调用router.back()方法返回到当前页。router.replaceUrl():目标页面会替换当前页,并销毁当前页。这样可以释放当前页的资源,并且无法返回到当前页。

注意:页面栈的最大容量为32个页面。如果超过这个限制,可以调用router.clear()方法清空历史页面栈,释放内存空间。

Router模块提供了两种实例模式,分别是Standard和Single。这两种模式决定了目标url是否会对应多个实例。 Standard:多实例模式,也是默认情况下的跳转模式。目标页面会被添加到页面栈顶,无论栈中是否存在相同url的页面。Single:单实例模式。如果目标页面的url已经存在于页面栈中,则会将离栈顶最近的同url页面移动到栈顶,该页面成为新建页。如果目标页面的url在页面栈中不存在同url页面,则按照默认的多实例模式进行跳转。 在使用页面路由Router相关功能之前,需要在代码中先导入Router模块。 import router from '@ohos.router'; 跳转示例 1.普通跳转 function onJumpClick(): void {router.pushUrl({url: 'pages/Detail' // 目标url});} 2.带跳转模式和跳转结果

比如从其他页面,跳转到登录页面(全局唯一)

function onJumpClick(): void {router.pushUrl({url: 'pages/Detail' // 目标url}, router.RouterMode.Single, (err) => {if (err) {console.error(`Invoke pushUrl failed, code is ${err.code}, message is ${err.message}`);return;}console.info('Invoke pushUrl succeeded.');});} 3.替换原页面

比如从启动页面跳转到首页,同时需要销毁启动页

function onJumpClick(): void {router.replaceUrl({url: 'pages/Profile' // 目标url});} 4.带参数

在调用Router模块的方法时,添加一个params属性,并指定一个对象作为参数:

class DataModelInfo {age: number;}class DataModel {id: number;info: DataModelInfo;}function onJumpClick(): void {// 在Home页面中let paramsInfo: DataModel = {id: 123,info: {age: 20}};router.pushUrl({url: 'pages/Detail', // 目标urlparams: paramsInfo // 添加params属性,传递自定义参数}, (err) => {if (err) {console.error(`Invoke pushUrl failed, code is ${err.code}, message is ${err.message}`);return;}console.info('Invoke pushUrl succeeded.');})}

在目标页面中,可以通过调用Router模块的getParams()方法来获取传递过来的参数。

const params = router.getParams(); // 获取传递过来的参数对象const id = params['id']; // 获取id属性的值const age = params['info'].age; // 获取age属性的值 页面返回 1.返回上一页 router.back(); 2.返回到指定页面 router.back({url: 'pages/Home' // 指定url}); 3.返回到指定页面,并传递自定义参数信息。 router.back({url: 'pages/Home',params: {info: '来自Home页'}}); 4.目标页面中,在需要获取参数的位置调用router.getParams()方法即可,例如在onPageShow()生命周期回调中: onPageShow() {const params = router.getParams(); // 获取传递过来的参数对象const info = params['info']; // 获取info属性的值} 页面返回的特别说明 当使用router.back()方法返回到指定页面时,该页面会被重新压入栈顶,而原栈顶页面(包括)到指定页面(不包括)之间的所有页面栈都将被销毁。 如果使用router.back()方法返回到原来的页面,原页面不会被重复创建,因此使用@State声明的变量不会重复声明,也不会触发页面的aboutToAppear()生命周期回调。如果需要在原页面中使用返回页面传递的自定义参数,可以在需要的位置进行参数解析。例如,在onPageShow()生命周期回调中进行参数解析。 二、命名路由 为了支持组件化,HarmonyOS支持多HAP机制和共享包机制 在开发中为了跳转到共享包中的页面,可以使用router.pushNamedRoute()来实现,也就是命名路由的方式。 示例

在想要跳转到的共享包页面里,给@Entry修饰的自定义组件命名:

// library/src/main/ets/pages/Index.ets// library为新建共享包自定义的名字@Entry({ routeName : 'myPage' })@Componentstruct MyComponent {}

配置成功后需要在需要跳转的页面中引入命名路由的页面:

// entry/src/main/ets/pages/Index.etsimport router from '@ohos.router';import 'library/src/main/ets/pages/Index' // 引入共享包library中的命名路由页面@Entry@Componentstruct Index {build() {Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {Text('Hello World').fontSize(50).fontWeight(FontWeight.Bold).margin({ top: 20 }).backgroundColor('#ccc').onClick(() => { // 点击跳转到其他共享包中的页面try {router.pushNamedRoute({name: 'myPage',params: {data1: 'message',data2: {data3: [123, 456, 789]}}})} catch (err) {console.error(`pushNamedRoute failed, code is ${err.code}, message is ${err.message}`);}})}.width('100%').height('100%')}} 其他

基于命名路由技术方案时,建议将路由URL统一放在一个文件中做管理。

最后,为了能让大家更好的去学习提升鸿蒙 (Harmony OS) 开发技术,小编连夜整理了一份30个G纯血版学习资料(含视频、电子书、学习文档等)以及一份在Github上持续爆火霸榜的《纯血版华为鸿蒙 (Harmony OS)开发手册》(共计890页),希望对大家有所帮助。

纯血版鸿蒙 HarmonyOS 4.0 视频学习资料

 需要以上视频学习资料小伙伴

请点击→纯血版全套鸿蒙HarmonyOS学习资料

《纯血版华为鸿蒙 (Harmony OS)开发手册》

这份手册涵盖了当前鸿蒙 (Harmony OS) 开发技术必掌握的核心知识点

纯血版鸿蒙 (Harmony OS)开发手册部分精彩内容

HarmonyOS 概念:

系统定义技术架构技术特性系统安全

如何快速入门?

基本概念构建第一个ArkTS应用构建第一个JS应用……

开发基础知识: 

应用基础知识配置文件应用数据管理应用安全管理应用隐私保护三方应用调用管控机制资源分类与访问学习ArkTS语言……

基于ArkTS 开发:

Ability开发UI开发公共事件与通知窗口管理媒体安全网络与链接电话服务数据管理后台任务(Background Task)管理设备管理设备使用信息统计DFX国际化开发折叠屏系列.……

获取以上文中提到的这份纯血版鸿蒙 (Harmony OS) 开发资料的小伙伴 

请点击→纯血版全套鸿蒙HarmonyOS学习资料

🚀写在最后 如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。关注小编,同时可以期待后续文章ing🚀,不定期分享原创知识。想要获取更多完整鸿蒙最新VIP学习资料,请点击→纯血版全套鸿蒙HarmonyOS学习资料



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3