您的位置:首页 > 教育 > 培训 > 徐州工作招聘信息网_国内优秀vi设计案例_抖音seo排名软件哪个好_精品成品网站1688

徐州工作招聘信息网_国内优秀vi设计案例_抖音seo排名软件哪个好_精品成品网站1688

2025/5/16 6:54:23 来源:https://blog.csdn.net/mayumin/article/details/143682437  浏览:    关键词:徐州工作招聘信息网_国内优秀vi设计案例_抖音seo排名软件哪个好_精品成品网站1688
徐州工作招聘信息网_国内优秀vi设计案例_抖音seo排名软件哪个好_精品成品网站1688

说明

鸿蒙开发中,一个页面跳转到另一个页面,使用 Router 模块,与Vue、React框架有些类似

官网指南
官网API

应用场景

【登录】页面 -> 【首页】页面 -> 【我的】页面

跳转模式

Router模块提供了两种跳转模式:

  • router.pushUrl()
  • router.replaceUrl()

router.pushUrl()

目标页不会替换当前页,而是压入页面栈。这样可以保留当前页的状态

可以通过 返回键 或者调用 router.back() 方法返回到当前页

**应用场景:**通用

router.replaceUrl()

目标页会替换当前页,并销毁当前页。这样可以释放当前页的资源,并且无法返回到当前页。

应用场景: 登录成功后,跳转到【首页】,使用该方式,点击后退,不会后退到【登录】页面

页面栈的最大容量

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

导入模块

在使用页面路由Router相关功能之前,需要在代码中先导入Router模块。

import router from '@ohos.router';

router.pushUrl() 说明

跳转到应用内的指定页面。

api1

pushUrl(options: RouterOptions): Promise<void>

参数:

  • options:RouterOptions类型,必填项,跳转页面描述信息

RouterOptions

路由跳转选项,对象,有以下属性:

  • url:string类型,必填,表示目标页面的url,可以用以下两种格式:

  • 页面绝对路径,由配置文件中pages列表提供,例如:

    • pages/index/index

    • pages/detail/detail

  • 特殊值,如果url的值是"/",则跳转到首页。

  • params:object类型,表示路由跳转时要同时传递到目标页面的数据,切换到其他页面时,当前接收的数据失效。跳转到目标页面后,使用 router.getParams() 获取传递的参数,此外,在类web范式中,参数也可以在页面中直接使用,如this.keyValue(keyValue为跳转时params参数中的key值),如果目标页面中已有该字段,则其值会被传入的字段值覆盖。

案例一

有一个主页(Home)和一个详情页(Detail),希望从主页点击一个商品,跳转到详情页。同时,需要保留主页在页面栈中,以便返回时恢复状态。这种场景下,可以使用pushUrl()方法,并且使用Standard实例模式(或者省略)。

// 在Home页面中
function onJumpClick(): void {router.pushUrl({url: 'pages/Detail' // 目标url}, router.RouterMode.Standard, (err) => {if (err) {console.error(`Invoke pushUrl failed, code is ${err.code}, message is ${err.message}`);return;}console.info('Invoke pushUrl succeeded.');});
}
例子
router.pushUrl({url: 'pages/routerpage2',params: {data1: 'message',data2: {data3: [123, 456, 789]}}
}).then(() => {// success}).catch(err => {console.error(`pushUrl failed, code is ${err.code}, message is ${err.message}`);})

api2

pushUrl(options: RouterOptions, callback: AsyncCallback<void>): void

参数:

  • options:RouterOptions类型,必填,跳转页面描述信息。

  • callback:AsyncCallback<void> 类型,必填,异常响应回调。

例子
router.pushUrl({url: 'pages/routerpage2',params: {data1: 'message',data2: {data3: [123, 456, 789]}}
}, (err) => {if (err) {console.error(`pushUrl failed, code is ${err.code}, message is ${err.message}`);return;}console.info('pushUrl success');
});

router.replaceUrl() 说明

用应用内的某个页面替换当前页面,并销毁被替换的页面。不支持设置页面转场动效,如需设置,推荐使用Navigation组件。

api1

replaceUrl(options: RouterOptions): Promise<void>

参数:

  • options:RouterOptions类型,必填,跳转页面描述信息。
例子
router.replaceUrl({url: 'pages/detail',params: {data1: 'message'}
}).then(() => {// success}).catch(err => {console.error(`replaceUrl failed, code is ${err.code}, message is ${err.message}`);})

api2

replaceUrl(options: RouterOptions, callback: AsyncCallback<void>): void

参数:

  • options:RouterOptions类型,必填,跳转页面描述信息。

  • callback:AsyncCallback<void> 类型,必填,异常响应回调。

例子
router.replaceUrl({url: 'pages/detail',params: {data1: 'message'}
}, (err) => {if (err) {console.error(`replaceUrl failed, code is ${err.code}, message is ${err.message}`);return;}console.info('replaceUrl success');
});

实例模式

分别是Standard和Single。这两种模式决定了目标url是否会对应多个实例。

  • Standard:标准实例模式,也是默认情况下的实例模式。每次调用该方法都会新建一个目标页,并压入栈顶。

  • Single:单实例模式。即如果目标页的url在页面栈中已经存在同url页面,则离栈顶最近的同url页面会被移动到栈顶,并重新加载;如果目标页的url在页面栈中不存在同url页面,则按照标准模式跳转。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com